内容安全策略
1. iframe
在使用iframe 的时候
<iframe style="border:0;width:100%;height:100%" src="https://github.com/join"/>
经查 报的是
Refused to frame ‘https://github.com/’ because an ancestor violates the following Content Security Policy directive: “frame-ancestors ‘none’”.
原因是 点击劫持与安全策略
点击劫持与安全策略
禁止页面被放在iframe里加载主要是为了防止点击劫持(Clickjacking):
具体的,对于点击劫持,主要有 3 项应对措施:
- CSP(Content Security Policy,即内容安全策略)
- X-Frame-Options
- framekiller
服务端设置
通过设置 HTTP 响应头来声明 CSP 和X-Frame-Options,例如:
# 不允许被嵌入,包括<frame>, <iframe>, <object>, <embed> 和 <applet>
Content-Security-Policy: frame-ancestors 'none'
# 只允许被同源的页面嵌入
Content-Security-Policy: frame-ancestors 'self'
# 只允许被白名单内的页面嵌入
Content-Security-Policy: frame-ancestors www.example.com
# 不允许被嵌入,包括<frame>, <iframe>, <embed> 和 <object>
X-Frame-Options: deny
# 只允许被同源的页面嵌入
X-Frame-Options: sameorigin
# (已废弃)只允许被白名单内的页面嵌入
X-Frame-Options: allow-from www.example.com
还有个与frame-ancestors
长得很像的fra