Mysql
 sql >> Datenbank >  >> RDS >> Mysql

php:wie man SQL-Injection von $_POST verhindert

Sieht so aus, als ob es laufen könnte, also wenn es fehlschlägt, beschreiben Sie bitte wie.

Es gibt jedoch einen sofort sichtbaren Fehler:In den Zeilen

$sQuery = "SELECT COUNT(*) FROM (SELECT LINE_NAME, MODEL_ONLY, VER_ONLY, PROD_NO,
                                         LOT_SIZE, START_SERIAL, SERIAL_NO_LOW, SERIAL_NO_UP, PROD_DATE 
                                  FROM DOC_TO'.$sWhere.$sOrder.$sLimit.')";

Sie beginnen eine Zeichenfolge mit doppelten Anführungszeichen und versuchen, die Zeichenfolge mit einfachen Anführungszeichen zu unterbrechen, was nicht funktioniert. Der Code muss also lauten:

$sQuery = "SELECT COUNT(*) FROM (SELECT LINE_NAME, MODEL_ONLY, VER_ONLY, PROD_NO,
                                         LOT_SIZE, START_SERIAL, SERIAL_NO_LOW, SERIAL_NO_UP, PROD_DATE 
                                  FROM DOC_TO".$sWhere.$sOrder.$sLimit.")";

Abhängig von Ihrer Umgebung gibt es zusätzlich eine wichtige Sicherheitslücke in Ihrem Code:Zum Beispiel in der Zeile

$sLimit = " FIRST ".$_POST['iDisplayStart']." SKIP ".$_POST['iDisplayLength'];

Sie verwenden $_POST, um es direkt in eine SQL-Abfrage einzufügen, wodurch eine sogenannte SQL-Injection-Sicherheitslücke geöffnet wird.