前端安全問(wèn)題以及防范

點(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>

防范

  1. 服務(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è)。
  2. 對(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í)行。這里上傳的文件可以是木馬,病毒,惡意腳本。

防范:

  1. 前后端:都要嚴(yán)格控制上傳文件的類型;
  2. 后端:在上傳時(shí)按照一定規(guī)則對(duì)文件重命名;
  3. 后端:在服務(wù)器上對(duì)放置文件的目錄設(shè)置為不可執(zhí)行。

代辦

  1. 演示一下如果跳過(guò)文件格式上傳。
  2. 了解項(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)一定要加密處理。

代辦

  1. 項(xiàng)目里有哪些敏感信息,在哪里存著。比如登錄頁(yè)面的密碼加密,怎么處理的。
  2. 列舉項(xiàng)目中的加密和解密方法。

參考文檔
文檔1
文檔2
文檔3
文檔4

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容