FroZeN 0 Denunciar post Postado Março 12, 2004 Eu gostaria que o pessoal do PHP postassem aqui algumas dicas e textos ou links a respeito de segurança em PHP (no código). Eu acho que com o que eu sei de PHP, já da para fazer muita coisa, porém, eu fico com receio de fazer o sistema da minha empresa em PHP pois tenho medo de ser atacado. Compartilhar este post Link para o post Compartilhar em outros sites
Cristiano 0 Denunciar post Postado Março 13, 2004 Bom, vamos lá. A primeira coisa que posso te falar é de SEMPRE encriptar suas senhas do banco de dados. Quer um exemplo de "falha" muito grave que existe? Digamos que você armazene os dados de seus usuários em um banco de dados mySQL, em dois campos, LOGIN e SENHA. No seu formulário de login temos o seguinte: <form name="formulario" method="post"> Nome: <input type="text" name="login"><br> Senha: <input type="password" name="senha"> </form> Até aqui tudo bem, você pega os dados do formulário e verifica no seu banco de dados assim: <?php $login = $_POST['login']; $senha = $_POST['senha']; $sql = "SELECT * FROM tabela WHERE LOGIN = $login AND SENHA = $senha"; ?> Pronto, seu site tem um bug perfeito pra se logar nele sem saber os dados, quer ver porque? Se a pessoa colocar nos campos de login e senha OR "1=1" sua consulta ficará assim: <?php $sql = "SELECT * FROM tabela WHERE LOGIN = OR '1=1' AND SENHA = OR '1=1'"; ?> O sistema vai aceitar o OR '1=1', que significa OU 1=1, logicamente é. Bom, pra evitar esse tipo de transtorno você pode encriptar a senha antes de coloca-lá no banco de dados. Na hora de inserir os dados coloque assim: $sql = "INSERT INTO tabela (senha) VALUES (PASSWORD($senha))"; Isso encriptará o valor que está sendo adicionado, na hora da verificação você verifica assim: <?php $login = $_POST['login']; $senha = $_POST['senha']; $sql = "SELECT * FROM tabela WHERE LOGIN = $login AND SENHA = PASSWORD($senha)"; ?> Isso pode parecer simples, mas o número de páginas que tem esse tipo de falha é impressionante, já vi esse tipo de falha até no site da Microsoft. Bom, esse é apenas um exemplo, mas existem outros tipos de falhas geradas pelo ser humano. Desculpe pelo texto gigante. Cristiano G. Compartilhar este post Link para o post Compartilhar em outros sites
ScOuT 0 Denunciar post Postado Março 14, 2004 Eu costumo manda a senha jah criptografada em md5 pro bd !!!! Compartilhar este post Link para o post Compartilhar em outros sites
Cristiano 0 Denunciar post Postado Março 14, 2004 Isso, os métodos de encriptação são infinitos, até porque a pessoa mesmo pode fazer seu algoritmo de encriptação, vai do conhecimento de cada um. Um outro exemplo é o base64_encode(); usado para codificar os dados e o base64_decode(); para decodificar. Exemplo: <? $texto = "Cristiano Gadino de Assis"; $encriptado = base64_encode($texto); echo $encriptado; ?> Desencriptando: <? $texto = "Q3Jpc3RpYW5vIEdhbGRpbm8gZGUgQXNzaXM="; $desencriptado = base64_decode($texto); echo $desencriptado; ?> Compartilhar este post Link para o post Compartilhar em outros sites