開干
第一道墻
首先份招,認(rèn)識一下 X-Frame-Options切揭。
The X-Frame-Options
HTTP 響應(yīng)頭是用來給瀏覽器 指示允許一個頁面 可否在 <frame>
, <iframe>
, <embed>
或者 <object>
中展現(xiàn)的標(biāo)記。站點(diǎn)可以通過確保網(wǎng)站沒有被嵌入到別人的站點(diǎn)里面锁摔,從而避免 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中遠(yuǎn)遠(yuǎn)不夠巩步。
第二道墻
這么修改后可能還會遇到在打開iframe時出現(xiàn)錯誤
這里的原因可能是——開啟public角色的訪問權(quán)限后,真正放到iframe中還需要解決跨域問題桦踊,而老版本中對http_headers配置項的修改不起作用椅野,只能直接對explore_json去除csrf保護(hù)。
添加配置文件中的??
WTF_CSRF_EXEMPT_LIST = [
"superset.views.core.explore_json"
]
再次訪問有效籍胯,所以在master版本中竟闪,主要是依靠對特定接口取消保護(hù)來達(dá)到目的。
第三道墻
如果使用nginx進(jìn)行部署的話杖狼,還需要配置 nginx 發(fā)送 X-Frame-Options 響應(yīng)頭炼蛤,把下面這行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options sameorigin always;
注意:
- 修改配置項http_headers為 {"X-Frame-Options": ""} 對授權(quán)無用,但對限制有用蝶涩;
-
用戶訪問不在自己角色可能訪問的數(shù)據(jù)理朋,只是權(quán)限問題,可能報錯: