Quanto è sicura questa affermazione MySQL in uno script PHP?
-
05-07-2019 - |
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']));
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?