Logo Hardware.com.br
RyderMais
RyderMais Novo Membro Registrado
32 Mensagens 2 Curtidas

[Dica] Se protegendo contra ataques de SQL Injection (PHP / MySql)

#1 Por RyderMais 24/05/2015 - 01:00
Como muitos sabem, na internet possuem muitos scripts que ajudam a proteger seu site ou projeto que tenha banco de dados MySql contra os temidos ataques de SQL Injection. Já testou seu código para saber se ele está vulnerável a uma invasão á qualquer momento?

Existem vários modos de descobrir isso, más um meio mais simples é você verificar como está iniciando ou executando as consultas no seu PHP. Se você costuma deixar suas variáveis de dados que o usuário preenche, puro do tipo:

$username = $_POST["username"];
$password = $_POST["password"];
$sql = @mysql_query("SELECT * FROM tabela_exemplo WHERE nome_de_usuario = '$username' AND senha = '$password'");

Desse jeito você estará deixando um grande risco a segurança, pois não importa o que o usuário digitar, na consulta, ela poderá ser considerada como um termo. Nesse exemplo, na área do formulário de login, caso no username nós digitassemos nada e no password colocassem: ' or 1='1

$username = ;
$password = ' or 1='1;
$sql = @mysql_query("SELECT * FROM tabela_exemplo WHERE nome_de_usuario = '' AND senha = '' or 1='1");

Nesse caso, o usuário conseguiria estar tendo acesso do seu sistema sem precisar ao menos do login e senha. Claro que para você deixar seu site imune de ataques SQL Injection você precisa estar fazendo outros testes mais afundo no assunto, más esse é um dos erros que as pessoas mais cometem ao criar seu site.

Aqui um código simples Anti Sql Injection para usar na própria variável:

$username = strip_tags(trim(addslashes($_POST["username"])));
$password = strip_tags(trim(addslashes($_POST["password"])));
$sql = @mysql_query("SELECT * FROM tabela_exemplo WHERE nome_de_usuario = '$username' AND senha = '$password' LIMIT 1");

Detalhes: strip_tags = Remove todas as citações de PHP ou HTML / trim = Remove espaços / addslashes = Adiciona barra antes dos apóstrofos ( ' )

Na medida do possível, códigos como esse estará dificultando bastante a vida dos hackers de plantão caso estejam tentando acessar seu banco de dados. Antes de tudo, o fundamental para o SQL Injection funcionar seria se a "agulha entrasse na veia", não importa o conteúdo que tenha nele. Espero ter ajudado wink.png
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal