我遇到了一些Html.Encode和用户想要使用特殊字符的问题。首先,字符被html代码替换,因此不能正确显示。然后,如果文本稍后被编辑并重新提交,则在重新提交这些html代码时会抛出异常。
考虑到这是一个内部网站点,并且几乎不存在故意攻击的可能性,那么不使用Html.Encode真的有风险吗?有没有可能有人无意中提交了一些导致问题的特殊字符?
或者,有没有更好的方法来解决这个问题?
发布于 2010-10-12 19:20:43
考虑到这是一个内部网站点,并且几乎不存在故意攻击的可能性,不使用Html.Encode真的有风险吗
是的,是的,再一次。有人在输入字段中输入特殊字符总是有风险的。web开发的黄金法则是永远不要相信用户输入,并始终对可能来自用户输入的任何内容进行编码。
发布于 2010-10-12 20:18:55
检查您正在调用Html.Encode的所有地方,因为它听起来像是在对字符串进行双重编码(可能是在保存和显示时编码,也可能是在模板/部分上编码,然后再次编码)。
是的,即使字符串是内部的,也要对其进行编码,否则一个心怀不满的员工可能会造成一些严重的破坏。
发布于 2010-10-12 22:01:02
首先,字符被html代码替换,因此不能正确显示
你在双重编码。实际上,您希望通过Html.Encode来显示用户输入的HTML标记。除非你真的希望像<ul><li>这样的东西是一个项目符号列表,而不是显示标签。
然后,如果文本稍后被编辑并重新提交,则在重新提交这些
代码时会抛出异常。
无论您做了什么,以允许初始提交的那些,将工作,以允许编辑。同样,可能由于双重编码,您会遇到更多的问题。
考虑到这是一个内部网站点,并且几乎不存在故意攻击的可能性,那么不使用Html.Encode真的有风险吗?
在内心深处,您已经知道看待安全性的方式是错误的;)
https://stackoverflow.com/questions/3912906
复制相似问题