sql >> Databáze >  >> RDS >> Mysql

php:jak zabránit vkládání SQL z $_POST

Vypadá to, že by mohl běžet, takže pokud selže, popište jak.

Je v tom však jedna okamžitě viditelná chyba:V řádcích

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

začínáte řetězec dvojitými uvozovkami a pokoušíte se řetězec přerušit jednoduchými uvozovkami, což nebude fungovat. Kód tedy musí být:

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

V závislosti na vašem prostředí je navíc ve vašem kódu důležitá bezpečnostní chyba:Například v řádku

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

používáte $_POST k vložení přímo do SQL dotazu, což otevře takzvanou bezpečnostní díru SQL injection.



  1. Dělená tabulka Oracle

  2. PDO smyčkování přes a tisk fetchAll

  3. Nová instalace MYSQL, přístup odepřen pro uživatele „root“

  4. Jak získám první den v týdnu data v mysql?