假设我希望执行一个禁止从外部源加载任何内容的 html/css/JS 页面。除此之外,一切都应该被允许。
一些例子
HTML
<a href="http://www.google.com">Clicking this link would somehow fail</a>
<iframe src="http://www.google.com">Would not load</iframe>
CSS
body{
/* would show no background */
background: url('http://www.google.com/google.jpg');
}
JavaScript
// Despite access-control-allow-origin: * being set on the external
// resource it would error out.
httpRequest.open('GET', 'http://www.allowscrosorigin.org/', true);
// Should not do anything
location.href = "http://www.google.com";
我首先希望'ssandbox
上的属性<iframe>
允许这样做,但事实证明不能这样做。接下来一直在研究 CSP,我认为它能够涵盖 CSS 和 AJAX 部分,但无法阻止信息通过例如 iframed 自动点击链接或location.href
. 那么,有没有其他方法可以让这一切一起工作?或者这可以通过 Google Caja 来实现(我宁愿不必自动重写所有内容,但如果没有其他选择,那么我也愿意接受)?