sql >> Database >  >> RDS >> Mysql

php:hoe SQL-injectie van $_POST te voorkomen

Het lijkt erop dat het zou kunnen werken, dus als het mislukt, beschrijf dan hoe.

Er zit echter één direct zichtbare fout in:In de regels

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

je begint een string met dubbele aanhalingstekens en je probeert de string te onderbreken met enkele aanhalingstekens, wat niet zal werken. Dus de code moet zijn:

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

Afhankelijk van uw omgeving zit er bovendien een belangrijke beveiligingsfout in uw code:bijvoorbeeld in de regel

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

je gebruikt $_POST om het rechtstreeks in een SQL-query te plaatsen, wat een zogenaamd SQL-injectiebeveiligingsgat opent.



  1. Mysql 1 willekeurige rij

  2. Verlopen databasewachtwoord en nog steeds levende verbindingen

  3. Trigger in mysql veroorzaakt fout

  4. Waar en wanneer een databaseverbinding openen