Como seguro é esta declaração MySQL em um script PHP?
-
05-07-2019 - |
Pergunta
Como seguro é esta declaração MySQL construído em PHP? Seria vulnerável a uma injeção SQL?
$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())",
mysql_escape_string($_SESSION['client']['id']),
mysql_escape_string($_POST['id']));
Solução
Sim, porque% d única resulta em um número não há nenhuma necessidade de escapar da cadeia. Usando aspas simples proporcionaria uma melhoria de velocidade também. Assim, uma forma segura e rápida é:
$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', $_SESSION['client']['id'], $_POST['id']);
Outras dicas
Não, não deve ser vulnerável.
Aqui está um artigo detalhado sobre a forma de garantir a sua SQL consultas em PHP .
http: //www.tech- evangelist.com/2007/11/05/preventing-sql-injection-attack/
Parece-me muito bem.
Na verdade, há alguma necessidade de usar mysql_escape_string neste caso, uma vez que sprintf ( "% d") só pode resultar em um número?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow