Domanda

Quanto è sicura questa dichiarazione MySQL integrata in un PHP? Sarebbe vulnerabile a un'iniezione SQL?

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

Quanto è sicura questa dichiarazione MySQL integrata in un PHP? Sarebbe vulnerabile a un'iniezione SQL?

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

Quanto è sicura questa dichiarazione MySQL integrata in un PHP? Sarebbe vulnerabile a un'iniezione SQL?

<*>POST['id']));
È stato utile?

Soluzione

Sì perché% d genera solo un numero, non è necessario uscire dalla stringa. L'uso di virgolette singole fornirebbe anche un miglioramento della velocità. Quindi un modo sicuro e veloce è:

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

Sì perché% d genera solo un numero, non è necessario uscire dalla stringa. L'uso di virgolette singole fornirebbe anche un miglioramento della velocità. Quindi un modo sicuro e veloce è:

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

Sì perché% d genera solo un numero, non è necessario uscire dalla stringa. L'uso di virgolette singole fornirebbe anche un miglioramento della velocità. Quindi un modo sicuro e veloce è:

<*>POST['id']);

Altri suggerimenti

No, non dovrebbe essere vulnerabile.

Ecco un articolo dettagliato su come proteggere le tue SQL query in PHP .

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

Mi sembra perfetto.

In effetti, c'è bisogno di usare mysql_escape_string in questo caso, dal momento che sprintf ("% d ") può dare solo un numero?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top