了解内容安全策略的范围 frame-ancestors
Understanding the scope of Content Security Policy frame-ancestors
到目前为止,我的网络服务器总是设置 X-Frame-Options "sameorigin"
header,我没有遇到任何问题。但是,现在我需要在其他服务器上使用 iframe,但令我惊讶的是,Chrome 和 Safari 已弃用 allow-from
,因此不能使用 X-Frame-Options
.
所以,我正在将我的 header 切换到 CSP,但我遇到了一些问题。
假设有两台服务器,XA (192.168.1.1) 和 XB (192.168.1.2)。 XA 正在提供一个包含一些图表的页面,而 XB 正在提供一个包含其中一个图表的 iframe 的页面。
在 XA 中,我使用以下 header:Header set Content-Security-Policy "frame-ancestors 'self' 192.168.1.1"
。但是,当我访问 XB 的网站时,iframe 的内容没有加载,因为它违反了 CSP 政策。
那么,我有两个问题:
1) 政策朝哪个方向发挥作用?? XA --> XB 或 XA <-- XB?换句话说,192.168.1.1 是正确的还是应该改用 192.168.1.2?两个都试过了,都没有用,只是想知道哪个是正确的。
2) 出现政策违规错误的原因可能是什么?
出于测试目的,XA 和 XB 都只是提供简单的服务 HTML,没什么特别的。
XA
<html>
<body>
lalala
</body>
</html>
XB
<html>
<body>
<iframe src="http://192.168.1.1"/>
</body>
</html>
访问XB时浏览器控制台报错:Refused to display 'http://192.168.1.1/' in a frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' http://192.168.1.1".
没关系...只是找到了导致问题的原因。
至于1)策略需要指向192.168.1.2。
大约 2) 它无法正常工作,因为 XB 是我的笔记本电脑,我将浏览器指向本地主机。在 192.168.1.2 而不是 127.0.0.1 上将 Apache 更改为 运行 后,它起作用了。
到目前为止,我的网络服务器总是设置 X-Frame-Options "sameorigin"
header,我没有遇到任何问题。但是,现在我需要在其他服务器上使用 iframe,但令我惊讶的是,Chrome 和 Safari 已弃用 allow-from
,因此不能使用 X-Frame-Options
.
所以,我正在将我的 header 切换到 CSP,但我遇到了一些问题。
假设有两台服务器,XA (192.168.1.1) 和 XB (192.168.1.2)。 XA 正在提供一个包含一些图表的页面,而 XB 正在提供一个包含其中一个图表的 iframe 的页面。
在 XA 中,我使用以下 header:Header set Content-Security-Policy "frame-ancestors 'self' 192.168.1.1"
。但是,当我访问 XB 的网站时,iframe 的内容没有加载,因为它违反了 CSP 政策。
那么,我有两个问题:
1) 政策朝哪个方向发挥作用?? XA --> XB 或 XA <-- XB?换句话说,192.168.1.1 是正确的还是应该改用 192.168.1.2?两个都试过了,都没有用,只是想知道哪个是正确的。
2) 出现政策违规错误的原因可能是什么?
出于测试目的,XA 和 XB 都只是提供简单的服务 HTML,没什么特别的。
XA
<html>
<body>
lalala
</body>
</html>
XB
<html>
<body>
<iframe src="http://192.168.1.1"/>
</body>
</html>
访问XB时浏览器控制台报错:Refused to display 'http://192.168.1.1/' in a frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' http://192.168.1.1".
没关系...只是找到了导致问题的原因。
至于1)策略需要指向192.168.1.2。
大约 2) 它无法正常工作,因为 XB 是我的笔记本电脑,我将浏览器指向本地主机。在 192.168.1.2 而不是 127.0.0.1 上将 Apache 更改为 运行 后,它起作用了。