Pergunta

Foi-me dito em um anterior pergunta que minha consulta está propenso a injeções SQL.

get_stats = mysql_query("SELECT * 
                               FROM visitors 
                              WHERE site='$_GET[site]' 
                                AND date BETWEEN '$start_date' AND '$end_date' ");

Qual seria a maneira mais fácil de abordar este problema? E você tem algumas outras leituras sobre o assunto de injeções? (Algo que eu poderia perder no Google). Obrigado!

Foi útil?

Solução

Use instruções preparadas .

Na maioria dos casos, instruções preparadas fazer o trabalho de combinar sua consulta com os seus parâmetros, de forma segura.

Outras dicas

$ _ GET [ 'local'] é um valor que vem direto da URL no navegador que significa que um usuário pode facilmente mudar este valor a qualquer coisa que eles querem, você deve verificar / higienizar esse valor, todos os valores realmente antes de enviá-lo para um banco de dados.

Algo como isso seria um começo, ainda poderia usar mais trabalho e há muitas maneiras de fazê-lo, eu iria criar uma função personalizada / classe para passar facilmente todas as variáveis ??através do site inteiro que pode encher simplesmente repetitivo como este

$site = mysql_real_escape_string($_GET['site']);
$start_date = mysql_real_escape_string($start_date);
$end_date = mysql_real_escape_string($end_date);

get_stats = mysql_query("SELECT * FROM visitors WHERE site='$site' AND date >= '$start_date' AND date <= '$end_date' ");

mysql_real_escape_string é o mais básico e forma mais fácil de segurança aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top