有没有必要使用Html.Encode为内部网站?

时间:2010-10-12 08:48:40

标签: asp.net-mvc xss security html-encode

我遇到了Html.Encode和想要使用特殊字符的用户的一些问题。首先,字符被html代码替换,因此无法正确显示。然后,如果稍后编辑并重新提交文本,则在重新提交这些html代码时会抛出异常。

鉴于这是一个内部网站点并且故意攻击的可能性几乎不存在,是否存在不使用Html.Encode的风险?是否有人可能会无意中提交一些导致问题的特殊字符?

或者有更好的解决方法吗?

3 个答案:

答案 0 :(得分:1)

  

鉴于这是一个内部网站点   以及故意的可能性   攻击几乎不存在,是   没有使用的风险   了Html.Encode

是的,是的,是的。某人在输入字段中输入特殊字符总是存在风险。 Web开发的黄金法则永远不会信任用户输入,并始终编码可能来自用户输入的任何内容。

答案 1 :(得分:0)

检查您调用Html.Encode的所有地方,因为它听起来像是对字符串进行双重编码(可能在保存和显示时编码或在模板/部分上编码并再次编码)。

是的,即使它是内部的,也总是编码你的字符串,否则一个心怀不满的员工可能会造成一些严重的损害。

答案 2 :(得分:0)

  

首先,字符被html代码替换,因此无法正确显示

你是双重编码。您实际上希望Html.Encode显示用户输入的HTML标记。除非您确实希望<ul><li>之类的内容成为项目符号列表,而不是显示标记。

  

然后,如果稍后编辑并重新提交文本,则在重新提交这些html代码时会抛出异常。

无论你做了什么允许初次提交,都可以进行编辑。同样,也许是因为双重编码,你会遇到更多问题。

  

鉴于这是一个内部网站点并且故意攻击的可能性几乎不存在,是否存在不使用Html.Encode的风险?

内心深处你已经知道看待安全的方式是错误的;)