我可以安全地呈现 html 以便 运行 页面无法使用 Chrome 扩展访问那个 html

Can I render html securely so running page cannot access that html using a Chrome extension

我想构建一个 chrome 扩展以将一些敏感内容注入当前页面。当前页面应该无法访问它,但内容应该呈现在页面上以便用户可以看到它。

如果我将敏感内容放入 DOM,当前页面将能够查询 DOM 并访问敏感内容。

我能想到的唯一可行的方法是注入一个 iFrame,然后它会受到跨站点脚本的保护。

是否有任何 HTML 元素、工具、库或其他技术可以让我实现这一目标?

iframe 可能是目前最好的解决方案。


Shadow DOM 是一个可能的答案(将来*)。

理论上,外部文档只会看到影子根元素,但内部可以放置任何DOM。然而,实际上,阴影 DOM 仍然暴露,只是遍历方式不同。

为了防止检查,您could override some methods,例如

Object.defineProperty(host, 'shadowRoot', {
  get: function() { return null; },
  set: function(value) { }
});

但这并不安全,因为正如 Rob W 在评论中提到的那样,这可以被拦截。

In the end, it's important to remember that while amazingly fantastic, Shadow DOM has not been designed to be a security feature. Don't rely on it for complete content isolation.

请参阅此问题:Can a Shadow DOM secure my elements? 讨论 Shadow DOM 和其他方法的使用。

* future 指的是 efforts to add 一个 "private" 标志来完全从页面封装阴影 DOM。


另一个解决方案(也未准备好部署)是无缝 iframe。在 Chrome.

中进行了短暂的实验后,全面 interesting concept, it's currently not supported at all