Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

php:cách ngăn chặn SQL injection từ $ _POST

Có vẻ như nó có thể chạy, vì vậy nếu nó không thành công, vui lòng mô tả cách thực hiện.

Tuy nhiên, có một sai lầm có thể nhìn thấy ngay trong đó:Trong các dòng

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

bạn đang bắt đầu một chuỗi bằng dấu ngoặc kép và bạn cố gắng ngắt chuỗi bằng dấu nháy đơn, điều này sẽ không hoạt động. Vì vậy, mã phải là:

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

Tùy thuộc vào môi trường của bạn, ngoài ra có một lỗ hổng bảo mật quan trọng trong mã của bạn:Ví dụ:trong dòng

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

bạn đang sử dụng $ _POST để đưa nó trực tiếp vào một truy vấn SQL, điều này sẽ mở ra cái gọi là lỗ hổng bảo mật SQL injection.



  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 - bao nhiêu cột là quá nhiều?

  2. Cách cập nhật mật khẩu đã quên bằng cách gửi email trong php mysql

  3. MySQL loại bỏ các hàng trùng lặp

  4. truy vấn mysql để so khớp câu với từ khóa trong một trường

  5. Script sẽ không đăng nhập