Javascript XSS预防
有一个Node.js项目用于清理数据,还有一个用于JavaScript的OWASP库,用于处理清理过程以防止XSS。
我一直在对这些库进行基准测试,它们非常密集,也许是一个过大的杀伤力,我的应用程序不需要任何动态HTML(由用户,bbtags提交,甚至根本不需要,都不需要),所以为什么不这样做呢:
- 禁用“
<
”和“>
”字符,不要替换它们或其他任何东西,只需禁用它们,如果用户提交了这些,则警告他们已禁用这些字符(客户端和服务器端验证) &
=>&
"
=>"
'
=>'
/
=>/
- 编码提交的URL(GET参数等)
- 由于基于DOM的XSS,因为我的应用程序使用HTML5 PushState,并且后端与前端完全分开,所以可以使用。
就像我说的那样,这足以保护我自己了,我的应用程序不需要用户提交的任何HTML,因此我根本不需要<
and >
标签。
感谢您的所有反馈,这就是我现在使用的:
var pattern = /<(.*)>/;function hasHtmlTags(string) {
return pattern.test(string);
};
if (hasHtmlTags(userData)) {
// Do something?
} else {
// Create entity.
}
因此用户仍然可以使用表情符号:<等,并且仅在找到<和>的组合时才触发该函数。因此,没有昂贵的正则表达式之类的东西,只需禁用<和>即可,我们应该没事。
回答:
这是一个通用的编码过程:
var lt = /</g, gt = />/g,
ap = /'/g,
ic = /"/g;
value = value.toString().replace(lt, "<").replace(gt, ">").replace(ap, "'").replace(ic, """);
如果您的用户未向服务器提交任何内容,则您甚至不需要以上内容。如果用户提交并且您正在使用用户输入,那么以上内容应该是安全的。只要全局清洁了<<和’>’,并且括号也不错,那么您就可以开始使用。
以上是 Javascript XSS预防 的全部内容, 来源链接: utcz.com/qa/417345.html