Pregunta

¿Qué tan segura es esta declaración MySQL incorporada en un PHP? ¿Sería vulnerable a una inyección de SQL?

$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())", 
                 mysql_escape_string(

¿Qué tan segura es esta declaración MySQL incorporada en un PHP? ¿Sería vulnerable a una inyección de SQL?

<*>SESSION['client']['id']), mysql_escape_string(

¿Qué tan segura es esta declaración MySQL incorporada en un PHP? ¿Sería vulnerable a una inyección de SQL?

<*>POST['id']));
¿Fue útil?

Solución

Sí, porque% d solo da como resultado un número, no hay necesidad de escapar de la cadena. El uso de comillas simples también proporcionaría una mejora de la velocidad. Así que una forma segura y rápida es:

$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', 

Sí, porque% d solo da como resultado un número, no hay necesidad de escapar de la cadena. El uso de comillas simples también proporcionaría una mejora de la velocidad. Así que una forma segura y rápida es:

<*>SESSION['client']['id'],

Sí, porque% d solo da como resultado un número, no hay necesidad de escapar de la cadena. El uso de comillas simples también proporcionaría una mejora de la velocidad. Así que una forma segura y rápida es:

<*>POST['id']);

Otros consejos

No, no debería ser vulnerable.

Aquí hay un artículo detallado sobre cómo proteger sus consultas SQL en PHP .

http: //www.tech- evangelist.com/2007/11/05/preventing-sql-injection-attack/

Me parece bien.

De hecho, ¿hay alguna necesidad de usar mysql_escape_string en este caso, ya que sprintf ("% d ") solo puede dar como resultado un número?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top