sql >> Databasteknik >  >> RDS >> Mysql

php:hur man förhindrar SQL-injektion från $_POST

Det ser ut som om det skulle kunna köras, så om det misslyckas, beskriv hur.

Det finns dock ett omedelbart synligt misstag i det:I raderna

$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.')";

du startar en sträng med dubbla citattecken och du försöker avbryta strängen med enkla citattecken, vilket inte kommer att fungera. Så koden måste vara:

$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.")";

Beroende på din miljö finns det dessutom ett viktigt säkerhetsbrist i din kod:Till exempel i raden

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

du använder $_POST för att lägga in det direkt i en SQL-fråga, vilket öppnar ett så kallat SQL-injektion säkerhetshål.



  1. Fallet med kardinalitetsuppskattningen Red Herring

  2. Hur man gör ActiveRecord ThreadSafe

  3. android.content.res.Resources$NotFoundException:String resurs ID #0x2 Database

  4. Kan jag hämta lastInsertId från en massinlaga?