什么是正则表达式,可用于确定字符串是否是XSS(跨站点脚本)安全风险?
答案 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解析器。