一尘不染

在Node.js /服务器端javascript中阻止XSS

node.js

知道如何防止对node.js应用程序进行XSS攻击吗?在那里处理删除href,onclick属性等中的javascript的任何库。从发布的数据?

我不想为所有这些写正则表达式:)

有什么建议?


阅读 282

收藏
2020-07-07

共1个答案

一尘不染

建议从GoogleCaja借用JS中基于白名单的JS中的HTML清理器,据我快速浏览可知,该实现器不依赖HTML来实现HTML SAX解析器。浏览器的DOM。

更新: 另外,请记住,Caja消毒器显然已经过全面,专业的安全检查,而正则表达式以易于破坏安全性的方式而闻名。

2017年9月24日更新:
现在也有DOMPurify。我还没有使用过它,但是看起来它达到或超过了我要寻找的每一个要点:

  • 尽可能依靠运行时环境提供的功能。(通过尽可能多地使用经过测试的成熟实现,对于性能和最大化安全性都非常重要。)

    • Node.JS依赖于浏览器的DOM或jsdom
    • 默认配置旨在尽可能减少剥离,同时仍保证删除javascript。

    • 支持HTML,MathML和SVG

    • 回到Microsoft专有的,无法toStaticHTML在IE8和IE9下进行配置的状态。
    • 高度可配置,使其适用于对可以包含任意HTML的输入进行限制,例如WYSIWYG或Markdown注释字段。(实际上,这是这里的顶端)

    • 支持常用的标签/属性白名单/黑名单和URL regex白名单

    • 具有特殊的选项,可以进一步清除某些常见类型的HTML模板元字符。
    • 他们对兼容性和可靠性很重视

    • 在16种不同的浏览器以及Node.JS的三个不同主要版本上运行的自动化测试。

    • 为确保开发人员和CI主机都在同一页面上,将发布锁定文件。
2020-07-07