sql >> Database teknologi >  >> RDS >> Mysql

php:hvordan man forhindrer SQL-injektion fra $_POST

Det ser ud som om det kunne køre, så hvis det mislykkes, beskriv venligst hvordan.

Der er dog en umiddelbart synlig fejl i den:I linjerne

$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 starter en streng med dobbelte anførselstegn, og du forsøger at afbryde strengen med enkelte anførselstegn, hvilket ikke vil virke. Så koden skal være:

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

Afhængigt af dit miljø er der desuden en vigtig sikkerhedsfejl i din kode:For eksempel i linjen

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

du bruger $_POST til at sætte det direkte ind i en SQL-forespørgsel, som åbner et såkaldt SQL-injektion sikkerhedshul.



  1. mySQL Returnerer top 5 i hver kategori

  2. Hvorfor denne databasemigreringsfejl, efter at jeg har opgraderet min version django-mptt?

  3. Forstå visninger i SQL

  4. PDO-fejl:SQLSTATE[HY000]:Generel fejl:2031