我想在我的应用程序中使用基于浏览器的代码编辑器,例如Monaco或Ace,以允许用户在浏览器中编写一些将由其他用户执行的代码。你可以想象jsfiddle或类似的。但是,我不想打开Cross-Site-Scripting漏洞。我没有发现如何在应用程序中正确实现这些工具并阻止XSS。
有没有办法在运行时“沙盒”这些工具中编写的javascript? JSFiddle,CodePen和在线编辑器等工具如何防范恶意脚本?一般而言,在我的应用程序中使用基于浏览器的代码编辑器时,我应该使用哪些技术来防止XSS漏洞?
答案 0 :(得分:1)
通常,这些工具在另一个域上运行脚本。因此,他们(故意)容易受到跨站脚本攻击,但他们通过利用相同的原始策略对其进行沙盒化。这是最简单,最简单的方法。即使编辑器站点具有登录等,在此沙箱域上运行的脚本也会被相同的源策略阻止访问主域上的任何内容,因此XSS相当无用。