有一个用于清理数据的Node.js项目,并且有一个用于处理消毒以防止XSS的JavaScript的OWASP库。我的应用程序不需要任何动态HTML(由用户提交,bbtags或者其他任何不需要的),所以为什么不这样做呢?为什么不这样做呢?为什么不这样做呢?为什么不这样做呢?为什么不这样做?这样的:Javascript XSS预防
- 禁用“
<
”和“>
”字,不能代替或什么,只是禁用它们,如果用户提交这些,给他们一个警告,这些被禁用(客户端和服务器 - 侧验证) &
=>&
"
=>"
'
=>'
/
=>/
- 编码提交的URL(GET参数等) 基于自我的申请XSS覆盖
- DOM使用HTML5 pushState的和后端是完全与前端分开。
这将是足以保护自己,正如我所说,我的应用程序不需要用户提交的任何HTML,所以我没有在所有需要的<
和>
标签。
感谢所有的反馈,这是我用现在:
var pattern = /<(.*)>/;
function hasHtmlTags(string) {
return pattern.test(string);
};
if (hasHtmlTags(userData)) {
// Do something?
} else {
// Create entity.
}
因此用户仍然可以使用他们的表情:<和这样的,而且功能只被触发如果<和>组合被发现。所以没有昂贵的正则表达式等,只是禁用<和>组合,我们应该没问题。
我明白了,但用户不使用它是见于Ger.Offen,如果他们这样做,他们是不是必需的。所以我想,为什么不放过这些矫枉过正和禁用它们。 – onlineracoon
它应该是足够的,[只要你指定你的字符编码](https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#UTF-7_encoding)。 – user2428118