Mysql
 sql >> Baza danych >  >> RDS >> Mysql

php:jak zapobiec wstrzykiwaniu SQL z $_POST

Wygląda na to, że może działać, więc jeśli się nie powiedzie, opisz, jak.

Jest jednak w tym jeden od razu widoczny błąd:w wierszach

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

zaczynasz ciąg znaków z podwójnymi cudzysłowami i próbujesz przerwać ciąg pojedynczymi cudzysłowami, co nie zadziała. Kod musi więc wyglądać następująco:

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

W zależności od środowiska, w Twoim kodzie występuje poważna luka w zabezpieczeniach:Na przykład w linii

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

używasz $_POST, aby umieścić go bezpośrednio w zapytaniu SQL, co otwiera tak zwaną lukę bezpieczeństwa wstrzykiwania 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 nie uruchamia się na serwerze XAMPP

  2. Wydajność REGEXP (porównaj z LIKE i =)

  3. Tworzenie pliku kml z bazy danych mysql za pomocą php

  4. Błąd uruchamiania MySQL — brak elementu głównego

  5. laravel zapytanie mysql z wieloma funkcjami where orwhere i wewnętrznym sprzężeniem