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ể.