Hãy tha thứ cho tôi nếu đây là một câu hỏi ngớ ngẩn. Tôi đã không thể tìm thấy câu trả lời được nêu rõ ràng.Liệu Bind() hoặc Eval() tự động HtmlEncode để bảo vệ chống lại XSS?
tôi hiếm khi sử dụng Bind() hoặc Eval() trong trang aspx của tôi, và thay vào đó sử dụng cú pháp sau: (Giả sử đây là trong một ItemTemplate trong một điều khiển Repeater)
<asp:Label id="lblFirstName" runat="server" Text='<%# Microsoft.Security.Application.AntiXss.HtmlEncode(DataBinder.Eval(Container.DataItem, "FirstName").ToString()) %>
Tôi bắt đầu làm một này thời gian dài trước đây và chỉ đơn giản là không bao giờ đặt câu hỏi đó, nhưng bây giờ nó xảy ra với tôi rằng điều này có thể là quá mức cần thiết. Và bây giờ tôi đang sử dụng một CMS sử dụng cú pháp này ở khắp mọi nơi:
<asp:Label id="lblFirstName" runat="server" Text='<%# Bind("FirstName") %>
Vì vậy, tôi tự hỏi, về cơ bản, nếu tôi sử dụng Bind() hoặc Eval() không thời gian chạy tự động HtmlEncode đầu ra? Tôi đã làm mã hóa không cần thiết tất cả cùng?
Có vẻ như goocd, nhưng có vẻ như nó có nghĩa là '<%= %>' (Phản hồi.Write tương đương) không phải là '<%# %>' các khối như bạn thấy trong ngữ cảnh DataBinding. Có một cách viết tắt tương đương cho các điều khiển databound đúng không? – David
Đừng bận tâm. Tìm thấy nó ở đây cho 4,5: http://www.asp.net/vnext/overview/aspnet/whats-new#_Toc318097391 Cảm ơn bạn đã chỉ cho tôi đúng hướng! – David
David Xin lỗi về điều đó, tôi cũng đã cập nhật câu trả lời –