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

Truy vấn chèn MySQL

Nó sẽ trừ khi bạn bao gồm các dấu ngoặc kép trong name đã đăng , điều này sẽ cho phép bạn thoát ra khỏi các dấu ngoặc kép. Ví dụ, đăng tên là:

' or 1 or '

Mệnh đề WHERE trở thành:

WHERE id = '' or 1 or '';

Điều này sẽ khớp và truy xuất tất cả các hàng trong bảng vì or 1 phần. Như bạn có thể thấy, nó thoát ra khỏi dấu ngoặc kép để đưa một số SQL vào, sau đó nó quay trở lại dấu ngoặc kép để làm cho truy vấn hợp lệ.

Không, nhưng nếu nó được thực thi với mysqli_multi_query thì có, bạn có thể thêm nhiều truy vấn vào cuối.

Nói chung là có nhưng một Tuyên bố Chuẩn bị sẽ tốt hơn. Sử dụng thoát, WHERE mệnh đề sẽ trở thành (sử dụng ví dụ của tôi ở trên):

WHERE id = '\' or 1 or \'';

Điều này không còn dễ bị tấn công vì không thể chia nhỏ các dấu ngoặc kép và sẽ chỉ khớp với các hàng nếu name khớp theo nghĩa đen với ' or 1 or ' điều này rõ ràng là không thể.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lấy nhiều tham số có cùng tên từ một URL trong PHP và chèn tất cả các bản ghi vào bảng

  2. Tìm Chuỗi Dòng Gần Nhất Từ Một Điểm Sử dụng Phần mở rộng Không gian MySQL

  3. các giá trị khác biệt của mysql không có chuỗi rỗng và NULL

  4. Việc ràng buộc khóa duy nhất với nhiều trường có ảnh hưởng đến hiệu suất của MySQL không?

  5. PDO:Truyền một hàm MySQL tới bindValue / bindParam