开干
第一道墙
首先,认识一下 X-Frame-Options。
The X-Frame-Options
HTTP 响应头是用来给浏览器 指示允许一个页面 可否在 <frame>
, <iframe>
, <embed>
或者 <object>
中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 clickjacking 攻击。
X-Frame-Options 有三个可能的值:
X-Frame-Options: deny # 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
X-Frame-Options: sameorigin # 表示该页面可以在相同域名页面的 frame 中展示。
X-Frame-Options: allow-from https://www.baidu.com/ # 表示该页面可以在指定来源的 frame 中展示。
在0.27中保持这个配置项为空即可,在master中远远不够。
第二道墙
这么修改后可能还会遇到在打开iframe时出现错误
image.png
这里的原因可能是——开启public角色的访问权限后,真正放到iframe中还需要解决跨域问题,而老版本中对http_headers配置项的修改不起作用,只能直接对explore_json去除csrf保护。
添加配置文件中的👇
WTF_CSRF_EXEMPT_LIST = [
"superset.views.core.explore_json"
]
再次访问有效,所以在master版本中,主要是依靠对特定接口取消保护来达到目的。
image.png
第三道墙
如果使用nginx进行部署的话,还需要配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options sameorigin always;
注意:
- 修改配置项http_headers为 {"X-Frame-Options": ""} 对授权无用,但对限制有用;
-
用户访问不在自己角色可能访问的数据,只是权限问题,可能报错:
image.png
网友评论