如何限制沙盒 iframe 可以连接的域?

How can I limit what domains a sandboxed iframe can connect to?

我正在创建类似于应用程序生态系统的东西,其中每个应用程序都在沙盒 iframe 中运行并处理敏感数据。我想允许脚本,但我不希望 iframe 与任何第 3 方服务器通信,否则它可能会泄露此数据。

有没有办法像使用 Chrome 扩展一样强制执行白名单?我是不是用错了方法?

您将希望限制所有事物可以连接到哪些域,而不仅仅是 XHR(img 标记也可以泄漏数据)。现代浏览器提供了一项称为 Content Security Policy.

的功能。

特别是,要将域列入白名单,您需要 return header 如下所示:

Content-Security-Policy: default-src 'self' safedomain.com securedomain.com

与任何与安全相关的事情一样,请务必仔细阅读该主题并了解您所处理内容的含义。 Copy-pasting 来自 Stack Overflow 答案的代码是不够的。

另请记住,一些较旧的浏览器不支持此功能并且会默默地不强制执行它,因此您可能希望检测到这一点并防止这些浏览器暴露敏感数据。