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']));
War es hilfreich?

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
scroll top