Wie sicher ist diese MySQL-Anweisung in einem PHP-Skript?
-
05-07-2019 - |
Frage
Wie sicher ist diese MySQL-Anweisung in einer PHP gebaut? Wäre es zu einer SQL-Injection verwundbar sein?
$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())",
mysql_escape_string($_SESSION['client']['id']),
mysql_escape_string($_POST['id']));
Lösung
Ja, weil% d nur zu einer Nummer besteht keine Notwendigkeit, die Zeichenfolge zu entkommen. Einfachen Anführungsstriche zu würde eine Verbesserung der Geschwindigkeit. So eine sichere und schnelle Art und Weise ist:
$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', $_SESSION['client']['id'], $_POST['id']);
Andere Tipps
Nein, es sollte nicht anfällig sein.
Hier ist ein ausführlicher Artikel, wie Sie Ihre SQL sichern Abfragen in PHP .
http: //www.tech- evangelist.com/2007/11/05/preventing-sql-injection-attack/
Es sieht für mich in Ordnung.
In der Tat ist es eine Notwendigkeit mysql_escape_string in diesem Fall zu verwenden, da sprintf ( "% d") nur in einer Reihe führen kann?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow