XSS正则表达式

时间:2011-01-06 23:28:57

标签: regex security xss

什么是正则表达式,可用于确定字符串是否是XSS(跨站点脚本)安全风险?

3 个答案:

答案 0 :(得分:5)

这取决于使用该字符串的上下文。

例如,如果字符串是作为HTML页面的一部分打印出来的,则特殊HTML字符<>"'可以可能是XSS的风险。

如果它通过JSON传递,那么'"可能是XSS风险。

如果它被包含在SQL语句中(它实际上不应该包含在内,至少不是直接使用参数化查询),那么诸如;和反引号之类的东西可能会成为一个问题。

等等。

答案 1 :(得分:3)

永远不会有防弹功能来阻止所有xss,而正则表达式不是最佳选择。 XSS高度依赖于页面上的位置,限制" ' < >这样的特征是一个良好的开端,但绝不是一个全面的解决方案。即使停止这些字符,也有 MANY other ways of exploiting XSS.仅举几例,有恶意href:javascript:alert(/xss/)并注入事件处理程序:onload=alert(/xss/),如果您筛选列出的4个字符,则将停止其下载。

HTMLPurifier由数千个正则表达式组成,并且它一直被绕过。

答案 2 :(得分:0)

查找从用户数据生成的html中的任何未编码的<个字符。没有任何<个字符,就不会在您的网站中注入令人讨厌的HTML。

如果要允许用户生成的格式,请将允许的html限制为子集。用正则表达式检查这个是不可能的,所以我推荐一个好的html解析器。