当前位置: 首页 > 面试题库 >

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

袁文景
2023-03-14
问题内容

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

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

有什么建议?


问题答案:

建议从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主机都在同一页面上,将发布锁定文件。


 类似资料:
  • 问题内容: 我有一个宠物项目,它是一个在线游戏,整个游戏引擎都是用C#编写的,我想知道是否仍然可以从使用Node.JS构建的解决方案中调用此现有程序集(.dll)的功能。 ,Socket.IO,Express等? 游戏引擎本身非常完整。经过测试且功能强大。我希望有一些简洁的方法来公开其功能,而又不会增加太多开销。 更新 : 稍微回答一下我自己的问题。.我已经结束了构建自己的Web套接字服务器(基于

  • 我怎样才能禁用Debian的保护来允许外部玩家加入我的服务器?

  • 问题内容: 这是我第一次使用Node.js,遇到了这个问题: 我已经通过IDE的插件启动了节点服务器。不幸的是,我无法使用IDE的终端。因此,我尝试从命令行运行脚本。 这是问题所在-我正在使用Express模块​​,而我的应用正在监听某个端口(8080)。当我从命令行启动应用程序时,它将引发以下错误: 即使我不太确定该错误可能是什么,我仍然认为这是因为该应用程序正在侦听已在使用的端口。所以我做了:

  • 每次启动Farming Valley服务器时,都会出现以下错误: 我基本上没有这方面的经验,我不明白这是怎么回事。如有任何帮助,我们将不胜感激!提前道谢。知道我从OVH那里买了一台服务器可能会很好

  • 问题内容: 我是Node.js的新手,但是通过使用它我对套接字流Web框架有了一些了解,我可以轻松地从JavaScript调用服务器端的node.js方法。不使用该框架,我不知道该怎么做。如何从JavaScript调用node.js方法? 以下代码使用套接字流调用服务器端方法。因此,我想在不使用此框架的情况下调用相同的服务器端方法。 问题答案: 我建议使用Socket.IO 服务器端代码 和客户端

  • 问题内容: 我见过的大多数实现都是在客户端进行浏览器检测。我只是想知道是否有可能在将任何资源发送到客户端之前进行浏览器检测。 谢谢。 问题答案: 那应该为您工作。只需将其放在响应处理程序中即可。