2010-06-28 25 views
7

Với .net 4 có một mới <%:%> bao vây tập lệnh giống như <% =%> nhưng thực hiện mã hóa html. Mọi người đang khuyến khích sử dụng cú pháp mới này.<%: %> so với Microsoft thư viện chống XSS

Câu hỏi của tôi là, không <%:%> bảo vệ chống lại XSS tốt hơn hoặc cũng như sử dụng thư viện Microsoft Anti XSS?

Nhân viên bảo mật của Microsoft đã từng bảo tôi không bao giờ sử dụng mã HTML vì nó không bảo vệ tốt và tôi luôn sử dụng thư viện Anti XSS (hoặc thư viện khác). Điều đó vẫn đúng với <%:%>? Hoặc tôi có thể tự tin sử dụng <%:%> biết rằng nó sẽ bảo vệ ứng dụng của tôi khỏi XSS như mọi người đang nói?

Trả lời

9

HttpUtility.HtmlEncode sử dụng một danh sách đen (nguyên tắc loại trừ) ở cách tiếp cận để mã hóa, trong đó có khả năng rời khỏi cửa khép hờ cho khai thác mới khám phá trong tương lai. Anti-XSS library (bây giờ được gọi là Thư viện bảo vệ web và bao gồm mã để giảm thiểu tiêm SQL) sử dụng phương pháp tiếp cận danh sách trắng (nguyên tắc bao gồm) đóng cửa lại xa hơn một chút và sẽ cung cấp bảo mật tốt hơn.

<%: ... %> chỉ là phím tắt cho <%= Server.HtmlEncode(string) %> và do đó cung cấp tính bảo mật của bộ mã hóa được sử dụng trong ứng dụng của bạn.

Bạn có thể sử dụng bất kỳ bộ mã hóa nào bạn thích với cú pháp mới <%: ... %> và Phil Haack có bài đăng tuyệt vời trên hooking up the Anti-Xss library as the default encoder. Hãy nhớ rằng hiện tại thư viện Anti-XSS 3.1 yêu cầu sự tin cậy trung bình để chạy - điều này đang được giải quyết cho một bản phát hành trong tương lai.

+0

Tôi không biết về việc hooking lên <%: %> vào bộ mã hóa khác. Đó là khá mát mẻ. – dtc

1

Cú pháp mới chỉ nên được sử dụng để thoát khỏi nội dung văn bản thô trong HTML. EDIT: và thuộc tính.

Đối thuộc tính, Javascript, và bối cảnh khác, bạn vẫn nên sử dụng thư viện Anti-XSS,

+0

Thư viện Anti-XSS cung cấp mã hóa an toàn hơn cho mã hóa HTML và thuộc tính cũng như – orip