2012-07-08 31 views
6

Phương pháp AntiXSS của MS (v4.2.1) Sanitizer.GetSafeHtmlFragment(string) đang xóa <br><br /> thẻ khỏi đầu vào của tôi. Đây có phải là vụ xảy ra? Có cách nào xung quanh nó không?Sanitizer.GetSafeHtmlFragment có phải xóa <br> yếu tố không?

Dường như cũng đang xóa \n\r ký tự, vì vậy tôi không thể gọi Replace() sau khi trình vệ sinh đã thực hiện công việc của mình.

Trả lời

7

Bản phát hành 4.2.x được thúc đẩy bởi lỗ hổng bảo mật được phát hiện chính xác trong trình vệ sinh HTML. Thông tin thêm về thực tế này:

Tuy nhiên, có vẻ như bên cạnh việc sửa chữa các lỗ hổng khử trùng đã được thay đổi để có nhiều tích cực hơn đến mức gần như là không sử dụng được. Có một vấn đề được báo cáo về thực tế này trong trang web WPL CodePlex (GetSafeHtmlFragment replacing all html tags).

Nếu vấn đề của bạn chỉ với <br> thẻ và bạn muốn gắn bó với chất khử trùng AntiXSS thì bạn có thể thực hiện giải pháp thay thế xấu để xử lý trước dữ liệu nhập của bạn sau đó xử lý kết quả của chất khử trùng.

Something như thế này (mã chỉ mang tính chất minh họa):

static void Main(string[] args) 
{ 
    string input = "<br>Hello<br/>World!"; 

    input = EscapeHtmlBr(input); 
    var result = Sanitizer.GetSafeHtmlFragment(input); 
    result = UnescapeHtmlBr(result); 

    Console.WriteLine(result); 
} 

const string BrMarker = @"|br|"; 

private static string UnescapeHtmlBr(string result) 
{ 
    result = result.Replace(BrMarker, "<br />"); 

    return result; 
} 

private static string EscapeHtmlBr(string input) 
{ 
    input = input.Replace("<br>", BrMarker); 
    input = input.Replace("<br />", BrMarker); 
    input = input.Replace("<br/>", BrMarker); 

    return input; 
} 
+2

Thanks ... đó là những gì tôi đã "hy vọng" cho. Tuy nhiên, có vẻ như thư viện AntiXSS cơ bản là vô dụng. Tôi muốn sử dụng nó trên một khu vực văn bản WYSIWYG ... nó làm sạch quá nhiều. ; ( – Chaddeus

+1

Chỉ cần thêm vào, có vẻ như nếu bạn muốn hàm kém tích cực hơn, chúng ta cần sử dụng 'HTMLsantizationLibary.dll' là một phần của AjaxControlToolkit - http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/HTMLEditorExtender/ HTMLEditorExtender.aspx – RemarkLima

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