2010-01-12 25 views
7

Có thư viện dọn dẹp Html/Anti-Xss toàn diện cho .NET cũng có danh sách trắng được xác định hay không. Tôi biết rằng Microsofts Anti-Xss là một nơi tốt để bắt đầu, nhưng nó cần một danh sách trắng tốt cho các thẻ html và css được cho phép. Có ai biết gì không?Có .NET thực hiện HtmlPurifier (php)

Trả lời

9

Có gì sai với thư viện Anti-XSS của Microsoft (bạn đã đề cập)?

Họ đã hoàn toàn làm sạch HTML để lọc các ký tự dựa trên danh sách trắng, phân tích cú pháp HTML, lọc các nút dựa trên danh sách trắng và sau đó tạo lại HTML (an toàn). Bạn có thể thay đổi danh sách trắng (vì mã mở), nhưng tôi không chắc chắn bạn muốn.

Cách sử dụng rất đơn giản quá:

var sanitizedHtml = Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(inputHtml); 
+0

Điều đó rất tuyệt! Tôi đã viết thuốc khử trùng cheesy của riêng tôi ... không còn nữa! – Chaddeus

+7

Thật không may là quá trình phát hành Thư viện AntiXSS khá không thân thiện. Phiên bản 4.2.1 đã giới thiệu những thay đổi đột phá lớn bất ngờ, không có dòng thời gian cho bản sửa lỗi và không có nguồn cho ngã ba. Không phải thứ bạn muốn dựa vào. –

1

Theo MSDN (xem mục "Cho phép Restricted HTML Input") là cách tốt nhất để khử trùng đầu vào HTML là để gọi HttpUtility.HtmlEncode() trên đầu vào của bạn và sau đó chọn lọc thay thế cho mã hóa trên tất cả các thẻ danh sách trắng của bạn như vậy:

<%@ Page Language="C#" ValidateRequest="false"%>  
<script runat="server">  
    void submitBtn_Click(object sender, EventArgs e) 
    { 
    // Encode the string input 
    StringBuilder sb = new StringBuilder(
          HttpUtility.HtmlEncode(htmlInputTxt.Text)); 
    // Selectively allow and <i> 
    sb.Replace("&lt;b&gt;", "<b>"); 
    sb.Replace("&lt;/b&gt;", ""); 
    sb.Replace("&lt;i&gt;", "<i>"); 
    sb.Replace("&lt;/i&gt;", ""); 
    Response.Write(sb.ToString()); 
    } 
</script> 

Xem thêm this article.

+2

Nội dung này đã lỗi thời và không còn được duy trì. 12 trong số 200 người dùng thấy nó hữu ích. –

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