點(diǎn)擊劫持
什么是點(diǎn)擊劫持
點(diǎn)擊劫持 (Clickjacking) 技術(shù)又稱為界面?zhèn)窝b攻擊 (UI redress attack ),是一種視覺(jué)上的欺騙手段,通過(guò)點(diǎn)擊誘騙網(wǎng)站中的其他內(nèi)容,用戶被誘騙實(shí)際點(diǎn)擊了隱藏的可操作內(nèi)容。
可能是電子郵件中的鏈接,引誘用戶點(diǎn)擊按鈕即可贏得獎(jiǎng)品或平臺(tái)點(diǎn)贊。他們被攻擊者欺騙,按下了另一個(gè)隱藏按鈕,這導(dǎo)致他們?cè)诹硪粋€(gè)網(wǎng)站上支付了一個(gè)賬戶。這是點(diǎn)擊劫持攻擊的一個(gè)示例。這項(xiàng)技術(shù)依賴于將包含按鈕或隱藏鏈接完全隱藏起來(lái)(完全透明)合并到IFRAME中。IFrame覆蓋在用戶預(yù)期的誘餌網(wǎng)頁(yè)內(nèi)容之上。
舉例一
<html>
<head>
<title>點(diǎn)擊劫持的頁(yè)面</title>
<style>
button {
position: absolute;
top: 270px;
left: 750px;
width: 90px;
height:40px;
}
</style>
</head>
<body>
<button id="pay">點(diǎn)擊付錢</button>
</body>
<script type="text/javascript">
document.getElementById("pay").onclick=function () {
alert("你上當(dāng)了,謝謝付錢!");
}
</script>
</html>
舉例二
<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<title>有機(jī)會(huì)免費(fèi)領(lǐng)取蘋果手機(jī)</title>
<style>
iframe {
width: 1440px;
height: 900px;
position: absolute;
top: -0px;
left: -0px;
z-index: 2;
-moz-opacity: 0;
opacity: 0;
filter: alpha(opacity=0);
}
button {
position: absolute;
top: 270px;
left: 750px;
z-index: 1;
width: 90px;
height:40px;
}
</style>
</head>
<body>
<button>點(diǎn)擊領(lǐng)取免費(fèi)蘋果手機(jī)</button>
<img src="lingqufuli.jpg">
<iframe src="http://192.168.58.129:8088/clickhijack_war" scrolling="no"></iframe>
</body>
</html>
防范
- 服務(wù)端設(shè)置X-FRAME-OPTIONS 機(jī)制,該機(jī)制有兩個(gè)選項(xiàng):DENY 和 SAMEORIGIN。DENY表示任何網(wǎng)頁(yè)都不能使用 iframe 載入該網(wǎng)頁(yè),SAMEORIGIN表示符合同源策略的網(wǎng)頁(yè)可以使用 iframe載入該網(wǎng)頁(yè)。如果瀏覽器使用了這個(gè)安全機(jī)制,在網(wǎng)站發(fā)現(xiàn)可疑行為時(shí),會(huì)提示用戶正在瀏覽的網(wǎng)頁(yè)存在安全隱患,并建議用戶在新窗口(官方網(wǎng)站)中打開(kāi)。這樣攻擊者就無(wú)法通過(guò) iframe 隱藏目標(biāo)的網(wǎng)頁(yè)。
- 對(duì)于重要的接口,多設(shè)計(jì)驗(yàn)證碼,這樣能夠防止點(diǎn)擊一下就進(jìn)行操作的風(fēng)險(xiǎn)。
點(diǎn)擊劫持與CSRF攻擊的不同之處
點(diǎn)擊劫持,需要用戶執(zhí)行通過(guò)點(diǎn)擊、拖拽、觸屏等實(shí)際操作方式,執(zhí)行事件,而CSRF攻擊依賴于在用戶不知道或無(wú)輸入的情況下偽造整個(gè)請(qǐng)求。
CDN帶來(lái)的風(fēng)險(xiǎn)
項(xiàng)目中使用cdn加載靜態(tài)資源雖然能夠提升加載性能,但是這些靜態(tài)資源也有可能被污染,從而加載并執(zhí)行了攻擊者想讓我們執(zhí)行的內(nèi)容。
什么是CND
為什么靜態(tài)資源會(huì)使用 CDN
防范
盡量不使用cdn,或者是在使用前,對(duì)資源的安全性進(jìn)行驗(yàn)證。
文件上傳漏洞
文件上傳漏洞是指攻擊者跳過(guò)文件格式校驗(yàn),上傳一個(gè)可執(zhí)行的文件到服務(wù)器并執(zhí)行。這里上傳的文件可以是木馬,病毒,惡意腳本。
防范:
- 前后端:都要嚴(yán)格控制上傳文件的類型;
- 后端:在上傳時(shí)按照一定規(guī)則對(duì)文件重命名;
- 后端:在服務(wù)器上對(duì)放置文件的目錄設(shè)置為不可執(zhí)行。
代辦
- 演示一下如果跳過(guò)文件格式上傳。
- 了解項(xiàng)目里面目前是怎么上傳的,是否有獨(dú)立的文件服務(wù)器。
本地存儲(chǔ)信息泄露
平常寫代碼的時(shí)候,我們經(jīng)常會(huì)往localStorage或sessionStorage中存一些內(nèi)容,如果一些敏感信息被存到這里,比如前端加密公鑰、用戶密碼等關(guān)鍵信息,就很有可能導(dǎo)致信息泄露,給攻擊者營(yíng)造機(jī)會(huì)。
防范:
敏感信息不要保存到localStorage、sessionStorage中,如果涉及到一些必須保存的內(nèi)容,請(qǐng)一定要加密處理。
代辦
- 項(xiàng)目里有哪些敏感信息,在哪里存著。比如登錄頁(yè)面的密碼加密,怎么處理的。
- 列舉項(xiàng)目中的加密和解密方法。