Question

Quel est le degré de sécurité de cette déclaration MySQL dans un fichier PHP? Serait-il vulnérable à une injection SQL?

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

Quel est le degré de sécurité de cette déclaration MySQL dans un fichier PHP? Serait-il vulnérable à une injection SQL?

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

Quel est le degré de sécurité de cette déclaration MySQL dans un fichier PHP? Serait-il vulnérable à une injection SQL?

<*>POST['id']));
Était-ce utile?

La solution

Oui, car% d donne uniquement un nombre, il n'est pas nécessaire d'échapper à la chaîne. L'utilisation de guillemets simples fournirait également une amélioration de la vitesse. Donc, un moyen sûr et rapide est:

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

Oui, car% d donne uniquement un nombre, il n'est pas nécessaire d'échapper à la chaîne. L'utilisation de guillemets simples fournirait également une amélioration de la vitesse. Donc, un moyen sûr et rapide est:

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

Oui, car% d donne uniquement un nombre, il n'est pas nécessaire d'échapper à la chaîne. L'utilisation de guillemets simples fournirait également une amélioration de la vitesse. Donc, un moyen sûr et rapide est:

<*>POST['id']);

Autres conseils

Non, cela ne devrait pas être vulnérable.

Voici un article détaillé sur la sécurisation de vos requêtes SQL dans PHP .

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

Cela me semble bien.

En fait, est-il nécessaire d'utiliser mysql_escape_string dans ce cas, car sprintf ("% d") ne peut générer qu'un nombre?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top