在MVC 2中是否存在一些神奇的代码用于Html.Encode()字符串并允许某些HTML标记,比如段落和换行符?(来自Linq to SQL数据库字段)
以下是一个可怕的代码示例以实现该效果:
Html.Encode(Model.fieldName).Replace("<br />", "<br />")
真正好的做法是重载某个方法,并传递一个包含允许使用的HTML标签的数组(或对象)。
在MVC 2中是否存在一些神奇的代码用于Html.Encode()字符串并允许某些HTML标记,比如段落和换行符?(来自Linq to SQL数据库字段)
以下是一个可怕的代码示例以实现该效果:
Html.Encode(Model.fieldName).Replace("<br />", "<br />")
真正好的做法是重载某个方法,并传递一个包含允许使用的HTML标签的数组(或对象)。
基于正则表达式创建自己的白名单并不是一个好主意,因为这样做很可能会无意中为XSS攻击打开安全漏洞。
来自 Sanderson 的书《Pro ASP.NET MVC3 Framework》: "...唯一可行的缓解方法是采用严���的基于白名单的过滤方式:使用类似于HTML Agility Pack 的库来确保用户提供的标记只包含您明确允许的标签。"
Sanderson 继续提供了一个网站链接,该站展示了广泛的 XSS 技术,如果您使用正则表达式方法,则必须进行测试。请查看 http://ha.ckers.org/xss.html
我暂时想不到什么,但我猜你可以编写一个扩展方法,允许你添加参数/项目列表。
Html.Encode(Mode.fieldName, List<items> Myitems);
<
等,然后像正常情况下一样对其余部分进行编码。
<br/>
(期望它显示为这样,而不是被转换为实际的换行符),那么当它被你的程序“取消转义”时,他们会感到惊讶... - Dean Harding