Mysql
 sql >> база данни >  >> RDS >> Mysql

php:как да предотвратите SQL инжектиране от $_POST

Изглежда, че може да работи, така че ако не успее, моля, опишете как.

В него обаче има една веднага видима грешка:В редовете

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

започвате низ с двойни кавички и се опитвате да прекъснете низа с единични кавички, което няма да работи. Така че кодът трябва да бъде:

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

Освен това в зависимост от вашата среда има важен пропуск в сигурността във вашия код:например в реда

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

използвате $_POST, за да го поставите директно в SQL заявка, което отваря така наречената дупка в сигурността на SQL инжектиране.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL дава на редовете цял живот

  2. вътрешно присъединяване и ефективност на клаузата къде in()?

  3. Актуализиране на таблицата в тригера след актуализация на същата таблица

  4. Грешка 1038 Изчерпана памет, помислете за увеличаване на размера на буфера за сортиране

  5. как да разделя таблица по колона дата и час?