Javascript XSS预防

有一个Node.js项目用于清理数据,还有一个用于JavaScript的OWASP库,用于处理清理过程以防止XSS。

我一直在对这些库进行基准测试,它们非常密集,也许是一个过大的杀伤力,我的应用程序不需要任何动态HTML(由用户,bbtags提交,甚至根本不需要,都不需要),所以为什么不这样做呢:

  1. 禁用“ <”和“ >”字符,不要替换它们或其他任何东西,只需禁用它们,如果用户提交了这些,则警告他们已禁用这些字符(客户端和服务器端验证)
  2. & => &amp;
  3. " => &quot;
  4. ' => &#x27;
  5. / => /
  6. 编码提交的URL(GET参数等)
  7. 由于基于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, "&lt;").replace(gt, "&gt;").replace(ap, "&#39;").replace(ic, "&#34;");

如果您的用户未向服务器提交任何内容,则您甚至不需要以上内容。如果用户提交并且您正在使用用户输入,那么以上内容应该是安全的。只要全局清洁了<<和’>’,并且括号也不错,那么您就可以开始使用。

以上是 Javascript XSS预防 的全部内容, 来源链接: utcz.com/qa/417345.html

回到顶部