点击按钮弹出iframe_WEB安全(四) :CSRF与点击劫持
跨站點(diǎn)請(qǐng)求偽造
CSRF是跨站點(diǎn)請(qǐng)求偽造,它的請(qǐng)求有兩個(gè)關(guān)鍵點(diǎn),跨站點(diǎn)的請(qǐng)求與請(qǐng)求是偽造的,
從字面上看,跨站點(diǎn)的請(qǐng)求來源應(yīng)該是其他站點(diǎn),比如,目標(biāo)網(wǎng)站接收到來源網(wǎng)站的惡意操作,但是,只要是惡意操作,即使是同源,也可以算作請(qǐng)求偽造,因?yàn)榇瞬僮鞑⒉皇怯脩舻囊庠?/p>
場(chǎng)景
當(dāng)有兩個(gè)網(wǎng)站A和B的時(shí)候,目標(biāo)A網(wǎng)站有一個(gè)刪除文章的功能,當(dāng)我們請(qǐng)求的url為
www.a.com/blog/del?id=1用戶點(diǎn)擊刪除的時(shí)候。變會(huì)發(fā)出一個(gè)get請(qǐng)求,這樣便會(huì)刪掉一篇文章
然后攻擊者當(dāng)A網(wǎng)站的用戶進(jìn)行了登錄之后,誘騙A用戶打開b網(wǎng)站,然后執(zhí)行如下代碼
<img src='www.a.com/blog/del?id=1' />這樣,攻擊就會(huì)發(fā)生,則會(huì)刪掉A網(wǎng)站的文章
對(duì)于CSRF攻擊,其中最重要的是,需要用戶登錄,然后被誘導(dǎo)到惡意網(wǎng)站,從而獲取到cookie的身份認(rèn)證,然后進(jìn)行相關(guān)惡意操作
那么,如果當(dāng)用戶使用post提交呢,我們查看如下代碼
function new_form(){var f = document.createElement('form');document.body.appendChild(f);f.method='post';return f; }function create_elements(eform,ename,evalue){var e = document.createElement('input');eform.appendChild(e);e.type = 'text';e.name = enameif(!doucment,all){e.style.display = 'none';}else{e.style.display = 'block';e.style.width = '0px';e.style.height = '0px';}e.value = evaluereturn e; }var f = new_form(); create_elements(f,'tit','hi'); f.action = 'http://www.a.com/blog/add' f.submit();構(gòu)建完成,當(dāng)目標(biāo)網(wǎng)站A的用戶被欺騙訪問的惡意網(wǎng)站時(shí),一個(gè)跨域的post就會(huì)提交
危害
csrf的危害如下
如何防御
csrf能成功攻擊的根本原因是攻擊者能夠猜到所有的參數(shù),所以出于這個(gè)原因,我們?cè)诜烙那闆r下,可以使用token,因?yàn)閠oken在進(jìn)行數(shù)據(jù)請(qǐng)求或者操作的時(shí)候,是會(huì)生成一個(gè)隨機(jī)數(shù)返回給客戶端,所以這個(gè)不固定的數(shù)字可以讓攻擊者很難猜到。但是token僅僅是預(yù)防csrf用的。如果攻擊者使用xss獲取到token,那么該方案就會(huì)失效。這樣的攻擊可以稱為xsrf
界面操作點(diǎn)擊劫持
界面操作劫持是一種基于視覺欺騙的web劫持攻擊,在正常的網(wǎng)頁操作按鈕上面,放入一個(gè)不可見的iframe,實(shí)際上用戶的操作行為被其不可見的框所劫持,然后執(zhí)行惡意代碼
劫持分為以下三類
- 點(diǎn)擊劫持
- 拖放劫持
- 觸屏劫持
點(diǎn)擊劫持
那么首先點(diǎn)擊劫持首先的技術(shù)原理就是ifame+css樣式表,我們把iframe 放入 需要輸入的地方,然后再css中設(shè)置如下代碼
iframe{position:absolute;z-index:9999;opacity:0.1 }這三個(gè)代碼是最關(guān)鍵的代碼,首先position為定位,方便我們定位到需要交互的地方,然后z-index設(shè)置為最大層級(jí),然后進(jìn)行覆蓋,最后opacity 進(jìn)行隱藏
所以當(dāng)用戶點(diǎn)擊正常交互的按鈕時(shí),其實(shí)觸發(fā)了iframe的,然后執(zhí)行了iframe的代碼。
拖拽劫持
拖拽劫持其實(shí)在用戶需要拖拽的地方,以及拖拽后到達(dá)的地方都有惡意代碼進(jìn)行覆蓋。一般拖拽的目的是進(jìn)行數(shù)據(jù)竊取
觸屏劫持
觸屏劫持,是指當(dāng)用戶進(jìn)行手機(jī)操作的時(shí)候,進(jìn)行劫持,比如,手機(jī)的屏幕很小,一般人員會(huì)隱藏手機(jī)的地址欄,但是,攻擊者可以偽造地址欄給用戶輸入。然后進(jìn)行劫持
結(jié)尾
對(duì)于點(diǎn)擊劫持和xss等來說,點(diǎn)擊劫持因?yàn)樾枰T導(dǎo)用戶與頁面產(chǎn)生交互行為,因?yàn)閷?shí)施的成本更高,在網(wǎng)路喲中比較少見,但是未來仍要注意被攻擊的可能性
總結(jié)
以上是生活随笔為你收集整理的点击按钮弹出iframe_WEB安全(四) :CSRF与点击劫持的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux vim下删除一行和多行
- 下一篇: 带虚函数的类的sizeof分析