防止Node.js /服务器端JavaScript中的XSS

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

任何想法如何防止XSS攻击node.js应用程序?任何处理在hrefs中删除javascript,onclick属性等的库。从发布的数据?

我不想写一个正则表达式:)

有什么建议么?

提问于
用户回答回答于

建议借用Google Caja中JS中基于白名单的HTML清理程序,就我所知,通过快速滚动,可以实现HTML SAX解析器而不依赖于浏览器的DOM。

另外,请记住,Caja卫生杀菌剂显然已被授予完整的专业安全审查,而正则表达式以非常容易以安全折中的方式打错而闻名。

现在也有DOMPurify。我还没有使用它,但它看起来像满足或超过我期待的每一点:

  • 尽可能依赖运行时环境提供的功能。(对于性能和通过尽可能依赖经过良好测试的成熟实现最大限度地提高安全性而言都是重要的。)
    • 依赖浏览器的DOM或Node.JS的jsdom。
  • 默认配置旨在尽可能少的剥离,同时保证删除javascript。
    • 支持HTML,MathML和SVG
    • 回到微软专有的,toStaticHTML在IE8和IE9下不可配置的。
  • 高度可配置性,使其适用于对可包含任意HTML的输入(如WYSIWYG或Markdown注释字段)施加限制。(实际上,这是这个堆的顶部)
    • 支持常用的标记/属性白名单/黑名单和URL正则表白名单
    • 对于某些常见类型的HTML模板元字符,有特殊的选项来进一步消毒。
  • 他们对兼容性和可靠性非常认真
    • 在16个不同的浏览器上运行的自动化测试以及三个不同的主要版本的Node.JS.
    • 为了确保开发人员和CI主机都在同一页面上,锁定文件已发布。

扫码关注云+社区