如何制作 XSS 安全的基于浏览器的代码编辑器

How to make an XSS-safe browser-based code editor

我想在我的应用程序中使用基于浏览器的代码编辑器,例如 Monaco or Ace,以允许用户在浏览器中编写一些将由其他用户执行的代码。你可以想象 jsfiddle 或类似的东西。但是,我不想打开 Cross-Site-Scripting 漏洞。我没有找到太多关于如何在应用程序中正确实施这些工具并防止 XSS 的信息。

有没有办法"sandbox"这些工具写的javascript运行的时候? JSFiddle、CodePen、在线编辑器等工具如何防范恶意脚本?一般来说,在我的应用程序中使用基于浏览器的代码编辑器时,我应该使用什么技术来防止 XSS 漏洞?

通常这些工具 运行 另一个域上的脚本。因此,他们(有意)容易受到跨站点脚本攻击,但他们通过利用同源策略将其沙盒化。这是最简单易行的方法。即使编辑器站点有登录等,此沙箱域上的脚本 运行ning 也会被同源策略阻止访问主域上的任何内容,因此 XSS 相当无用。