asp.net - Bind() 或 Eval() 是否会自动进行 HtmlEncode 以防止 XSS?

标签 asp.net data-binding xss

如果这是一个愚蠢的问题,请原谅我。我一直无法找到明确说明的答案。

我很少在我的 aspx 页面中使用 Bind() 或 Eval(),而是使用以下语法:(假设这是在 Repeater 控件的 ItemTemplate 中)

<asp:Label id="lblFirstName" runat="server" Text='<%# Microsoft.Security.Application.AntiXss.HtmlEncode(DataBinder.Eval(Container.DataItem, "FirstName").ToString()) %>

我很久以前就开始这样做了,而且从来没有质疑过,但现在我意识到这可能是矫枉过正。现在我正在使用一个在所有地方都使用这种语法的 CMS:
<asp:Label id="lblFirstName" runat="server" Text='<%# Bind("FirstName") %>

所以我想知道,基本上,如果我使用 Bind() 或 Eval() 运行时会自动对输出进行 HtmlEncode 吗?我一直在做不必要的编码吗?

最佳答案

Bind() 和 Eval() 不做任何事情来阻止这种类型的事情并且不编码。 <%# %> 也不行样式代码块。

但是,如果您使用的是 ASP.NET 4 及更高版本,则可以使用 <%: %>用于处理响应写入类型情况和 <%#: %> 的 block 对于数据绑定(bind)情况。

Scott Guthrie 有一个很棒的 post对这个。

关于asp.net - Bind() 或 Eval() 是否会自动进行 HtmlEncode 以防止 XSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15641601/

相关文章:

asp.net - 使用 ASP.NET 3.5 WCF 在 SOAP 中设置 header

asp.net - 为什么我的 DropDownList 只为第一个列表项输出错误的值?

java - 是否可以使用构造函数将 Spring Form 绑定(bind)到 Object 或通过自定义编辑器将多个字段映射到单个值?

ajax - 像 "http://sharethis.com/"这样的小部件如何进行 XSS 调用

asp.net - javascript 是否可以可靠地防止前端的操作(例如表单提交)?

c# - 如何在 C# 中使用 SqlCommand 读取每一行和值?

javascript - 我可以在 Web 项目上使用 binding.js 进行数据绑定(bind)吗?

c# - WinForms 中的下拉绑定(bind)

javascript - 如何利用特定标准或过滤器滥用 XSS?

javascript - 创建 HTML 元素时清理用户输入