Liên quan đến điều này question Tôi chơi xung quanh với các vấn đề XSS trong dự án ASP.NET MVC của tôi và tôi nhầm lẫn với phương thức MvcHtmlSTring.ToHtmlString(). Từ documentation "Trả về một chuỗi HTML mã hóa đại diện cho đối tượng hiện tại.", Nhưng nó doesn't làm việc trong trường hợp của tôi:MvcHtmlString.ToHtmlString() không mã hóa HTML?
var mvcHtmlString = MvcHtmlString.Create("<SCRIPT/XSS SRC=\"htpp://ha.ckers.org/css.js\">").ToHtmlString();
var encoded = HttpUtility.HtmlEncode("<SCRIPT/XSS SRC=\"htpp://ha.ckers.org/css.js\">");
Sản lượng mvcHtmlString
<SCRIPT/XSS SRC="htpp://ha.ckers.org/css.js">
Sản lượng mã hóa < - - đây là hành vi tôi nghi ngờ!
<SCRIPT/XSS SRC="htpp://ha.ckers.org/css.js">
Tôi có bỏ lỡ điều gì đó không?
Nếu đó chỉ là vấn đề về tài liệu, mục đích của quá trình biến đổi ToHtmlString là gì? Từ ví dụ của tôi: Không có sự khác biệt giữa việc gọi phương thức "ToHtmlString()" và phương thức "ToString()" - cả hai đều sẽ xuất ra HTML không được mã hóa không hợp lệ. –
Đó là phương thức trên giao diện [IHtmlString] (http://msdn.microsoft.com/en-us/library/system.web.ihtmlstring.aspx). Nó thực sự có nghĩa là "trả lại nội dung HTML được chèn vào trang" - nghĩa là đây là những gì ASP.NET MVC 4 sẽ gọi và phát ra các kết quả mà không cần mã hóa thêm. Tôi đoán nó là để bạn có thể làm một cái gì đó khác nhau trong các lớp khác nhưng bạn phải không có sự khác biệt ở đây. – Rup