这种MVC方法是否足够安全,可以对抗与重新显示用户输入相关的XSS?

时间:2012-01-23 09:02:12

标签: asp.net-mvc xss

我为处理发布评论的操作设置了ValidateInput属性为false。我正在使用html.encoding,使用此语法<%:... %>重新显示注释

我在评论框中发布了以下代码,并且评论确实已发布,因为脚本标记完整但没有实际警报。这是可以接受的,对吗?

<script type="text/javascript"> alert("t"); </script>

现在,我知道我还需要注意与URL相关的攻击,但是为了重新显示输入,这种方法是否足够安全?

编辑:评论是我甚至允许像“&lt;”这样的字符的唯一地方。大多数其他输入框仅为字母数字。

1 个答案:

答案 0 :(得分:0)

您的方法是安全的,您使用<%:的事实意味着数据库中存储的内容无关紧要,渲染时要编码的值在浏览器中,如果您查看呈现评论的页面的html源代码,您会看到<script...实际上是&lt;script...,浏览器不会将其解释为需要执行的事情。

作为旁注:虽然你应该总是做你目前正在做的事情,以确保这些评论永远不会在浏览器中逐字呈现(不先编码),最安全的方法是减少风险让他们首先通过您的服务器端验证。但是,有一些有效的用例需要在数据库中保存代码 - 因此它取决于您的用例(您尚未提供)