Tiêm có thể xảy ra trên bất kỳ câu lệnh SQL nào không chạy đúng cách.
Ví dụ: giả sử bảng nhận xét của bạn có hai trường, một số nguyên ID và chuỗi nhận xét. Vì vậy, bạn muốn INSERT
như sau:
INSERT INTO COMMENTS VALUES(122,'I like this website');
Hãy xem xét một ai đó bước vào những nhận xét sau đây:
'); DELETE FROM users; --
Nếu bạn chỉ cần đặt chuỗi bình luận vào SQL mà không cần bất kỳ processesing này có thể biến đơn INSERT
của bạn vào hai câu sau đây theo sau một nhận xét:
INSERT INTO COMMENTS VALUES(123,''); DELETE FROM users; -- ');
Thao tác này sẽ xóa mọi thứ khỏi bảng users
của bạn. Và có những người sẵn sàng dành cả ngày để tìm đúng tablename để trống bằng cách dùng thử và lỗi và các thủ đoạn khác nhau. Here's a description of how you could perform an SQL Injection attack.
Bạn cần sử dụng parameterized SQL statements để ngăn điều này.
Và đây không chỉ vì lý do bảo mật. Ví dụ, nếu bạn đang tạo câu lệnh SQL của bạn ngây thơ những nhận xét sau đây:
I'm just loving this website
sẽ gây ra lỗi cú pháp SQL vì dấu nháy đơn được giải thích bởi SQL như một báo bế mạc.
Nguồn
2009-03-25 13:29:13
Thông tin bổ sung: Khi bạn tạo trang web, không chỉ tập trung vào việc chèn sql. Kiểm tra cũng là nguy cơ XSS của văn bản trước khi bạn chèn nó vào cơ sở dữ liệu của bạn. Mỗi mã đầu ra có được bảo đảm thông qua Server.HtmlEncode (...) không? –