所以,我以为我是一个“资深的”ASP.NET WebForms开发人员;但是,我最近遇到了这个问题并且(令人不快地)惊讶于输出没有被转义:
Eval返回“< h1>笑话在你身上”的成像,或者对页面的正确呈现/安全性更恶意的事物.
有一个标签而不是的原因直接是这样,正如错误推测的那样,“UserData”的内容将被正确地转义为HTML.然而,显然不是这种情况,并且上述情况导致< h1>.在HTML标记中创建的元素.
然后问题可以提炼为:
给定任意用户输入,即将其显示为“纯文本”,将数据插入页面(跨度)并正确转义的简单/可靠/安全方法是什么?
如上所述,它应该在数据绑定控件的上下文中运行.我知道HttpUtility.HtmlEncode,但我想接受仍然使用控件的想法 – 也许我错过了这个任务的标准控件 – 安全地表示这种情况,而不需要包装Eval.如果这是误导的,基于逻辑或经验,最好包括在回复中.我不会拒绝在这种情况下我使用Label完全不合适的观点.
不幸的是,由于需要在SharePoint 2010上下文中运行,我的目标是ASP.NET for .NET 3.5,而不是ASP.NET 4.