X-Frame-Options HTTP 響應頭, 能夠指示瀏覽器是否應該加載一個 iframe 中的頁面。 網站能夠經過設置 X-Frame-Options 阻止站點內的頁面被其餘頁面嵌入從而防止點擊劫持css
方法一:常見的好比使用js,判斷頂層窗口跳轉:html
js 代碼: (function () { if (window != window.top) { window.top.location.replace(window.location); //或者幹別的事情 } })();
通常這樣夠用了,可是有一次發現失效了,看了一下人家網站就是頂層窗口中的代碼,發現這段代碼:python
js 代碼: var location = document.location; // 或者 var location = "";
輕輕鬆鬆被破解了,悲劇。nginx
注:此方式破解對IE6,IE7,IE9+、Chrome、firefox無效web
方法二:meta 標籤:基本沒什麼效果,因此也放棄了:瀏覽器
html 代碼: <meta http-equiv="Windows-Target" contect="_top">
方法三:使用HTTP 響應頭信息中的 X-Frame-Options屬性app
使用 X-Frame-Options 有三個可選的值:網站
換一句話說,若是設置爲 DENY,不光在別人的網站 frame 嵌入時會沒法加載,在同域名頁面中一樣會沒法加載。另外一方面,若是設置爲
SAMEORIGIN
,那麼頁面就能夠在同域名頁面的 frame 中嵌套ui
絕大部分瀏覽器支持:spa
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 4.1.249.1042 | 3.6.9 (1.9.2.9) | 8.0 | 10.5 | 4.0 |
配置 Apache
配置 Apache 在全部頁面上發送 X-Frame-Options 響應頭,須要把下面這行添加到 'site' 的配置中:
Header always append X-Frame-Options SAMEORIGIN
配置 nginx
配置 nginx 發送 X-Frame-Options 響應頭,把下面這行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options SAMEORIGIN;
配置 IIS
配置 IIS 發送 X-Frame-Options 響應頭,添加下面的配置到 Web.config 文件中:
<system.webServer> ... <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="SAMEORIGIN" /> </customHeaders> </httpProtocol> ... </system.webServer>
結果
在 Firefox 嘗試加載 frame 的內容時,若是 X-Frame-Options 響應頭設置爲禁止訪問了,那麼 Firefox 會用 about:blank 展示到 frame 中。也許從某種方面來說的話,展現爲錯誤消息會更好一點。