如何防止XSS,使用文本区域创建javascript代码



>我有一个文本区域,我将有一些用户将在文本区域内创建反应组件,他们将能够保存,编辑它们。我希望能够执行该javascript而不会受到xss的攻击。

此 JavaScript 将用于为创建它们的用户创建图形和其他图形组件。

    任何对任意JavaScript的
  1. "清理"都注定要失败,但是Caja项目定义了JavaScript和DOM的子集,可以静态分析,并且可以拒绝可疑脚本(不幸的是,当它不能完全理解它们时,也是良性的脚本(。

  2. 更好的方法可能是简单地按原样执行JavaScript,但在单独的域上。这样,您的网站将受到同源策略的保护,就像浏览器保护所有网站一样。

如果您使用 Cookie,则需要一个完全独立的 TLD(因为任何子域上的脚本都可能使整个域上的 cookie 中毒(。这就是谷歌对googleusercontent.com采取的方法,用于为谷歌翻译等运行任意脚本页面。

当您通过 iframe 在单独的域上运行 JS 时,您需要使用 postMessage 在页面和不受信任的脚本之间进行通信。请确保仔细验证收到的消息,就像验证任何用户输入或 API 调用一样。

这将是

极具挑战性的,即使有白名单。您可以考虑加载与域无关的新页面,这样它就不会有用于会话数据的 Cookie。它将位于不受信任的单独域上。

最新更新