Tôi ghét phải phá vỡ nó ra cho bạn, nhưng -
- XSS là một vấn đề đầu ra, không một vấn đề Input. Lọc/Xác thực đầu vào là một lớp bảo vệ bổ sung, nhưng nó không bao giờ có thể bảo vệ bạn hoàn toàn khỏi XSS. Hãy xem XSS cheatsheet by RSnake - có quá nhiều cách để thoát khỏi bộ lọc.
- Không có cách nào dễ dàng để khắc phục ứng dụng cũ. Bạn phải mã hóa chính xác mọi thứ mà bạn đặt vào tệp html hoặc javascript của mình và điều đó có nghĩa là xem lại mọi đoạn mã tạo html.
Xem OWASP's XSS prevention cheat sheet để biết thông tin về cách phòng ngừa XSS.
Một số nhận xét bên dưới cho thấy xác thực đầu vào là chiến lược tốt hơn là mã hóa/thoát tại thời điểm xuất. Tôi sẽ chỉ trích dẫn từ
OWASP's XSS prevention cheat sheet -
Thông thường, xác thực đầu vào là phương pháp ưu tiên để xử lý dữ liệu không đáng tin cậy. Tuy nhiên, xác nhận đầu vào không phải là một giải pháp tuyệt vời cho các cuộc tấn công tiêm. Đầu tiên, xác thực đầu vào thường được thực hiện khi nhận được dữ liệu, trước khi đích được biết. Điều đó có nghĩa là chúng ta không biết nhân vật nào có thể có ý nghĩa trong trình thông dịch đích. Thứ hai, và thậm chí quan trọng hơn, các ứng dụng phải cho phép các ký tự có khả năng gây hại. Ví dụ, người nghèo O'Malley có thể ngăn chặn việc đăng ký trong cơ sở dữ liệu đơn giản chỉ vì SQL coi 'một nhân vật đặc biệt?
Để xây dựng - khi người dùng nhập chuỗi như O'Malley, bạn không biết mình có cần chuỗi đó bằng javascript hay bằng html hay bằng một số ngôn ngữ khác. Nếu trong javascript của nó, bạn phải hiển thị nó như là O\x27Malley
và nếu nó ở dạng HTML, nó sẽ trông giống như O'Malley
. Đó là lý do tại sao nó được đề nghị trong cơ sở dữ liệu của bạn chuỗi nên được lưu trữ chính xác cách người dùng nhập, và sau đó bạn thoát nó một cách thích hợp theo đích cuối cùng của chuỗi.
Nguồn
2010-09-03 19:10:11
Lưu ý rằng bạn muốn ngăn chặn nó bằng cách sử dụng ngôn ngữ lập trình phía máy chủ/khuôn khổ, không sử dụng phía khách hàng (như JS). Các ngôn ngữ phía máy khách cụ thể là khách hàng không thể sửa chữa, có thể tấn công và giả mạo. – BalusC
xin vui lòng xem: http://www.petefreitag.com/item/759.cfm – Henry