本期小編給大家分享有些實戰(zhàn)很有必要的防范小常識,事情雖然比較小,但是往往被大家所忽視的問題,并分享給大家.
今天主要給大家聊聊網絡劫持的那些事兒,網絡劫持,搞網絡安全的童鞋應該不陌生了,但前端的小伙伴就可要當心了哦!
大家常見的可能都是些專業(yè)級別的操作,如:運營商劫持,DNS劫持,HTTP劫持等,今天主要還是給大家講一下前端劫持,點擊劫持,很多童鞋對這個專業(yè)名詞可能比較陌生,但實際中最常見.
我們先看一下概念吧,在百度上對于點擊劫持有這么一段話來描述:”點擊劫持被稱為Clickjacking的安全威脅,原本要在OWASPNYCAppSec2008大會上公布,但包括Adobe在內的廠商請求暫時不要公開這個漏洞,直到他們開發(fā)出安全補丁。
發(fā)現這個漏洞的是兩個安全研究專家,Robert Hansen 與 Jeremiah Grossman,他們已經略透露了一點相關信息以顯示該安全威脅的嚴重性。”
簡而言之,點擊劫持,只是一種從視覺上欺騙使用者的手段,大致分為兩種方式.
方式一: 使用透明的iframe來覆蓋網頁,讓用戶操作
方式二: 使用圖像來偽裝
簡單的示例如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
html,body,iframe{
display: block;
position:absolute;
width: 100%;
height: 100%;
margin: 0;
padding:0;
left:0;
right:0;
top:0;
bottom:0;
}
iframe{
opacity:20;
filter:alpha(opacity=20); /* IE */
-moz-opacity:0.2; /* Moz + FF */
opacity: 0.2; /* 支持css3的瀏覽器(FF 1.5也支持)*/
position:absolute;
z-index:2;
}
button{
position: absolute;
left:50%;
top:50%;
z-index: 1;
}
</style>
</head>
<body>
這是一個美女,大家先到先得!
<button>點擊查看詳情</button>
<iframe src="http://www.baidu.com" frameborder="0"></iframe>
</body>
</html>
原版效果如下圖:
以下為特定場景中的iframe框架效果,當前也可以使用其它標簽來實現功能,想一想如果我再把圖中的透明度設置為0,很多非法操作,是不是就很可能實現呢!?真是想一想都后怕.
總結: 當然以上內容本質上還只是一些大家沒有太注意到的UI層覆蓋問題,只是實現的手段不一樣而己,類似的東西還有以下操作:
Flash點擊劫持,操作本機攝像頭等
圖片覆蓋攻擊(XSIO)
拖拽劫持,主要是用于數據竊取
觸屏劫持(TapJacking)
以上方式給上網用戶帶來了很多安全隱患,導致個人隱私泄露,各種帳號丟失,甚至還可以導致轉帳問題,當然這些問題,也有對應的解決方案
防御方案:
X-FRAME-OPTIONS是目前最可靠的方法。X-FRAME-OPTIONS是微軟提出的一個http頭,專門用來防御利用iframe嵌套的點擊劫持×××。并且在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。
這個頭有三個值:
DENY // 拒絕任何域加載
SAMEORIGIN / / 允許同源域下加載
ALLOW-FROM // 可以定義允許frame加載的頁面地址
php代碼:
header('X-Frame-Options:Deny');
header('X-Frame-Options:SAMEORIGIN);
配置 Apache
配置 Apache 在所有頁面上發(fā)送 X-Frame-Options 響應頭,需要把下面這行添加到 'site' 的配置中:
Header always append X-Frame-Options SAMEORIGIN
配置 Nginx
配置 nginx 發(fā)送 X-Frame-Options 響應頭,把下面這行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options SAMEORIGIN;
配置 IIS
配置 IIS 發(fā)送 X-Frame-Options 響應頭,添加下面的配置到 Web.config 文件中:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
</system.webServer>