2010-02-25 26 views
11

Bởi chỉ cần chuyển đổi ("Công lớn 5") như sau:Mã hóa HTML có ngăn chặn việc khai thác bảo mật XSS không?

& -> & 
< -> &lt; 
> -> &gt; 
" -> &#034; 
' -> &#039; 

Bạn sẽ ngăn chặn các cuộc tấn công XSS?

Tôi nghĩ bạn cũng cần danh sách trắng ở cấp độ ký tự, để ngăn chặn certain attacks, nhưng following answer nói rằng nó quá tải các vấn đề.

CHỈNH SỬA Chi tiết page chi tiết it does not prevent more elaborate injections, does not help with "out of range characters = question marks" when outputting Strings to Writers with single byte encodings, nor prevents character reinterpretation when user switches browser encoding over displayed page. Về bản chất, việc thoát khỏi các ký tự này có vẻ là một cách tiếp cận ngây thơ.

+1

... Wikipedia nói "Thật là đáng chú ý là mặc dù nó được khuyến khích rộng rãi, chỉ cần thực hiện mã hóa thực thể HTML trên năm ký tự XML quan trọng không phải lúc nào cũng đủ để ngăn chặn nhiều hình thức XSS. Việc mã hóa có thể phức tạp và việc sử dụng thư viện mã hóa bảo mật được khuyến khích cao. " và trích dẫn bài viết này, mặc dù tôi không thể tìm thấy những gì trong bài viết đó biện minh cho tuyên bố: http://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet –

+1

Nó chỉ là khó khăn nếu bạn không biết những gì bạn đang làm hoặc đang làm việc đó ở những nơi khác nhau (sai). Chỉ cần nhất quán với nó. Mã hóa/thoát Tất cả đầu vào do người dùng điều khiển (URL yêu cầu, tham số yêu cầu, phần thân yêu cầu, v..v .. tất cả mọi thứ bắt nguồn từ người dùng) chỉ một lần trong khi hiển thị lại chúng trong lớp xem. Đó là tất cả. – BalusC

+0

Hey Pool - Bạn có sẵn sàng thay đổi câu trả lời ưa thích không? Câu trả lời từ @bobince là tốt hơn và có nhiều upvotes hơn. – nslntmnx

Trả lời

9

Bạn có ngăn chặn các cuộc tấn công XSS không?

Nếu bạn làm điều này thoát vào đúng thời điểm (*) sau đó có, bạn sẽ ngăn chặn-tiêm HTML. Đây là dạng tấn công XSS phổ biến nhất. Nó không chỉ là một vấn đề an ninh, bạn cần phải thực hiện thoát để dù sao mà các chuỗi với các ký tự đó sẽ hiển thị chính xác. Vấn đề bảo mật là một tập con của vấn đề chính xác.

tôi nghĩ rằng bạn cần vào danh sách trắng ở mức nhân vật quá, để ngăn chặn các cuộc tấn công nhất định

số HTML-thoát sẽ làm cho mỗi một trong những cuộc tấn công dưới dạng văn bản đơn giản không hoạt động trên trang web, mà là những gì bạn muốn. Phạm vi tấn công trên trang đó thể hiện các cách khác nhau để thực hiện HTML-injection, có thể nhận được xung quanh bộ lọc XSS “stupider” mà một số máy chủ triển khai để cố gắng ngăn chặn các cuộc tấn công HTML-injection thông thường. Điều này chứng tỏ rằng "bộ lọc XSS" vốn đã bị rò rỉ và không hiệu quả.

Có các hình thức tấn công XSS khác có thể hoặc không ảnh hưởng đến bạn, ví dụ: lược đồ xấu trên URI do người dùng gửi (javascript: et al), tiêm mã vào dữ liệu được lặp lại thành khối JavaScript (nơi bạn cần JSON) phong cách thoát) hoặc vào biểu định kiểu hoặc tiêu đề phản hồi HTTP (một lần nữa, bạn luôn cần dạng mã hóa thích hợp khi bạn thả văn bản vào ngữ cảnh khác; bạn phải luôn nghi ngờ nếu bạn thấy bất kỳ nội dung nào có nội suy không loại trừ như "string $var string" của PHP).

Sau đó, xử lý tải lên tệp, chính sách xuất xứ Flash, chuỗi quá dài UTF-8 trong trình duyệt cũ và các vấn đề tạo nội dung cấp ứng dụng; tất cả những điều này có khả năng dẫn đến việc tạo kịch bản cross-site. Nhưng HTML injection là một trong những chính mà mỗi ứng dụng web sẽ phải đối mặt, và hầu hết các ứng dụng PHP nhận được sai ngày hôm nay.

(*: là khi chèn nội dung văn bản vào HTML và không mất thời gian nào khác.Không có dữ liệu gửi biểu mẫu thoát HTML ở $_POST/$_GET khi bắt đầu tập lệnh của bạn, đây là lỗi sai lầm thường gặp.)

+0

Và đó là nó. – BalusC

4

Các biện pháp truy cập phụ thuộc vào ngữ cảnh nơi dữ liệu được chèn vào. Nếu bạn chèn dữ liệu vào HTML, thay thế ký tự meta HTML bằng chuỗi thoát (ví dụ: tham chiếu ký tự) ngăn chèn mã HTML.

Nhưng nếu trong ngữ cảnh khác (ví dụ: giá trị thuộc tính HTML được hiểu là URL), bạn có các ký tự meta bổ sung với các chuỗi thoát khác nhau mà bạn phải xử lý.

Các vấn đề liên quan