我为处理发布评论的操作设置了ValidateInput属性为false。我正在使用html.encoding,使用此语法<%:... %>
重新显示注释
我在评论框中发布了以下代码,并且评论确实已发布,因为脚本标记完整但没有实际警报。这是可以接受的,对吗?
<script type="text/javascript"> alert("t"); </script>
现在,我知道我还需要注意与URL相关的攻击,但是为了重新显示输入,这种方法是否足够安全?
编辑:评论是我甚至允许像“&lt;”这样的字符的唯一地方。大多数其他输入框仅为字母数字。
答案 0 :(得分:0)
是您的方法是安全的,您使用<%:
的事实意味着数据库中存储的内容无关紧要,渲染时要编码的值在浏览器中,如果您查看呈现评论的页面的html源代码,您会看到<script...
实际上是<script...
,浏览器不会将其解释为需要执行的事情。
作为旁注:虽然你应该总是做你目前正在做的事情,以确保这些评论永远不会在浏览器中逐字呈现(不先编码),最安全的方法是减少风险让他们首先通过您的服务器端验证。但是,有一些有效的用例需要在数据库中保存代码 - 因此它取决于您的用例(您尚未提供)