我遇到了Html.Encode
和想要使用特殊字符的用户的一些问题。首先,字符被html代码替换,因此无法正确显示。然后,如果稍后编辑并重新提交文本,则在重新提交这些html代码时会抛出异常。
鉴于这是一个内部网站点并且故意攻击的可能性几乎不存在,是否存在不使用Html.Encode
的风险?是否有人可能会无意中提交一些导致问题的特殊字符?
或者有更好的解决方法吗?
答案 0 :(得分:1)
鉴于这是一个内部网站点 以及故意的可能性 攻击几乎不存在,是 没有使用的风险 了Html.Encode
是的,是的,是的。某人在输入字段中输入特殊字符总是存在风险。 Web开发的黄金法则永远不会信任用户输入,并始终编码可能来自用户输入的任何内容。
答案 1 :(得分:0)
检查您调用Html.Encode的所有地方,因为它听起来像是对字符串进行双重编码(可能在保存和显示时编码或在模板/部分上编码并再次编码)。
是的,即使它是内部的,也总是编码你的字符串,否则一个心怀不满的员工可能会造成一些严重的损害。
答案 2 :(得分:0)
首先,字符被html代码替换,因此无法正确显示
你是双重编码。您实际上希望Html.Encode显示用户输入的HTML标记。除非您确实希望<ul><li>
之类的内容成为项目符号列表,而不是显示标记。
然后,如果稍后编辑并重新提交文本,则在重新提交这些html代码时会抛出异常。
无论你做了什么允许初次提交,都可以进行编辑。同样,也许是因为双重编码,你会遇到更多问题。
鉴于这是一个内部网站点并且故意攻击的可能性几乎不存在,是否存在不使用Html.Encode的风险?
内心深处你已经知道看待安全的方式是错误的;)