asp.net – Bind()还是Eval()自动使用HtmlEncode来防范XSS?

@H_301_0@
原谅我,如果这是一个愚蠢的问题.我未能明确地找到答案.

我很少在我的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和更高版本,则可以使用<%:%>处理此响应写入类型情况的块和<%#:%>用于数据绑定情况.

Scott Guthrie对此有很大的作用.

相关文章

项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。 使用了...
安装新版本的Nginx(vim /etc/yum.repos.d/nginx.repo) [nginx-stable] name=nginx stable repo baseu...
什么是 SignalR&#160;ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功...
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。 ## Docker Desktop介绍及安装 Do...
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求...
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主...