当前位置:  开发笔记 > 编程语言 > 正文

AntiSamy允许编码脚本警报通过?怎么阻止?

如何解决《AntiSamy允许编码脚本警报通过?怎么阻止?》经验,为你挑选了1个好方法。

我正在使用AntiSamy和可用的antisamy-1.4.1.xml策略.该政策正在很好地阻止大多数受到攻击的XSS,但以下内容未被阻止.有关如何阻止以下内容以防止XSS攻击的任何建议?

1234%27%2Balert%2873918%29%2B%27

谢谢



1> bobince..:

Antisamy是一个HTML内容过滤器,用于允许不受信任的用户输入有限的"安全"HTML子集.它不是一个通用的输入过滤器,可以使您不必考虑字符串转义和XSS问题.

您应该仅使用antisamy来清理包含您希望在页面上逐字输出的HTML的内容.大多数用户输入通常不是HTML:当用户键入时ad,通常应该使用小于和大于字符的文字,而不是粗体标记.为了确保正确发生这种情况,您必须对输出阶段插入页面的所有文本内容进行HTML转义,而不是与antisamy有关.

1234%27%2Balert%2873918%29%2B%27

这看起来不像典型的HTML注入攻击.它包含的唯一"特殊"字符是撇号,它通常在HTML中不常用,并且实际上不能从输入中过滤掉,因为用户通常需要使用撇号来用英语书写.

如果这会导致您的应用程序进行脚本注入,那么您遇到的问题比任何反犹主义都可以解决的问题更严重.如果这导致您的页面弹出alert()对话框,您可能正在使用JavaScript字符串文字中未转义的值,例如:


将文本内容作为字符串文字放入JavaScript代码中需要另一种形式的转义; 一个将'角色(%27在URL编码的输入中)转换为反斜杠转义\',并将\其自身转换为\\(以及一些其他替换).

从服务器端脚本语言到JavaScript文字获取值(字符串或其他)的简单方法是使用标准JSON编码器.

但是,在上面的例子中,JavaScript字符串文字本身包含在HTML属性中,因此您必须对JSON编码器的结果进行HTML 编码.这有点难看; 最好避免使用内联事件处理程序属性.使用外部脚本和(或者,通常是任何开头的,可以结束块的).要避免该序列,您应该<用其他东西替换该字符,例如.\x3C.一些JSON编码器可能有一个选项来为您节省麻烦.

在许多其他地方,将内容插入包含语言需要特殊的编码类型.每个都有自己的规则.使用通用输入过滤器无法避免字符串编码的困难.一些"反XSS"过滤器尝试,但它们总是失败地失败.


很好的答案.特别喜欢"如果这会导致您的应用程序出现脚本注入,那么您遇到的问题要比任何反犹太法案都能解决的问题大得多." 大+1.
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有