CSRF攻擊演示

csrf: 跨站點(diǎn)偽造請(qǐng)求Cross-site request forgery


image
  1. 用戶C打開瀏覽器,訪問(wèn)受信任網(wǎng)站A,輸入用戶名和密碼請(qǐng)求登錄網(wǎng)站A;
  2. 在用戶信息通過(guò)驗(yàn)證后,網(wǎng)站A產(chǎn)生Cookie信息并返回給瀏覽器,此時(shí)用戶登錄網(wǎng)站A成功,可以正常發(fā)送請(qǐng)求到網(wǎng)站A;
  3. 用戶未退出網(wǎng)站A之前,在同一瀏覽器中,打開一個(gè)TAB頁(yè)訪問(wèn)網(wǎng)站B;
  4. 網(wǎng)站B接收到用戶請(qǐng)求后,返回一些攻擊性代碼,并發(fā)出一個(gè)請(qǐng)求要求訪問(wèn)第三方站點(diǎn)A;
  5. 瀏覽器在接收到這些攻擊性代碼后,根據(jù)網(wǎng)站B的請(qǐng)求,在用戶不知情的情況下攜帶Cookie信息,向網(wǎng)站A發(fā)出請(qǐng)求。網(wǎng)站A并不知道該請(qǐng)求其實(shí)是由B發(fā)起的,所以會(huì)根據(jù)用戶C的Cookie信息以C的權(quán)限處理該請(qǐng)求,導(dǎo)致來(lái)自網(wǎng)站B的惡意代碼被執(zhí)行。

受害者 Bob 在銀行有一筆存款,通過(guò)對(duì)銀行的網(wǎng)站發(fā)送請(qǐng)求 http://bank.example/withdraw?account=bob&amount=1000000&for=bob2 可以使 Bob 把 1000000 的存款轉(zhuǎn)到 bob2 的賬號(hào)下。通常情況下,該請(qǐng)求發(fā)送到網(wǎng)站后,服務(wù)器會(huì)先驗(yàn)證該請(qǐng)求是否來(lái)自一個(gè)合法的 session,并且該 session 的用戶 Bob 已經(jīng)成功登陸。
黑客 Mallory 自己在該銀行也有賬戶,他知道上文中的 URL 可以把錢進(jìn)行轉(zhuǎn)帳操作。Mallory 可以自己發(fā)送一個(gè)請(qǐng)求給銀行:http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory。但是這個(gè)請(qǐng)求來(lái)自 Mallory 而非 Bob,他不能通過(guò)安全認(rèn)證,因此該請(qǐng)求不會(huì)起作用。
這時(shí),Mallory 想到使用 CSRF 的攻擊方式,他先自己做一個(gè)網(wǎng)站,在網(wǎng)站中放入如下代碼: src=”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory ”,并且通過(guò)廣告等誘使 Bob 來(lái)訪問(wèn)他的網(wǎng)站。當(dāng) Bob 訪問(wèn)該網(wǎng)站時(shí),上述 url 就會(huì)從 Bob 的瀏覽器發(fā)向銀行,而這個(gè)請(qǐng)求會(huì)附帶 Bob 瀏覽器中的 cookie 一起發(fā)向銀行服務(wù)器。大多數(shù)情況下,該請(qǐng)求會(huì)失敗,因?yàn)樗?Bob 的認(rèn)證信息。但是,如果 Bob 當(dāng)時(shí)恰巧剛訪問(wèn)他的銀行后不久,他的瀏覽器與銀行網(wǎng)站之間的 session 尚未過(guò)期,瀏覽器的 cookie 之中含有 Bob 的認(rèn)證信息。這時(shí),悲劇發(fā)生了,這個(gè) url 請(qǐng)求就會(huì)得到響應(yīng),錢將從 Bob 的賬號(hào)轉(zhuǎn)移到 Mallory 的賬號(hào),而 Bob 當(dāng)時(shí)毫不知情。等以后 Bob 發(fā)現(xiàn)賬戶錢少了,即使他去銀行查詢?nèi)罩荆仓荒馨l(fā)現(xiàn)確實(shí)有一個(gè)來(lái)自于他本人的合法請(qǐng)求轉(zhuǎn)移了資金,沒(méi)有任何被攻擊的痕跡。而 Mallory 則可以拿到錢后逍遙法外。

防御手段:

  1. 驗(yàn)證HTTP Referer字段,
  2. 在請(qǐng)求地址中添加token并驗(yàn)證
  3. 在HTTP頭中自定義屬性并驗(yàn)證

xss: 跨站腳本攻擊Cross Site Scripting

XSS是一種經(jīng)常出現(xiàn)在web應(yīng)用中的計(jì)算機(jī)安全漏洞,它允許惡意web用戶將代碼植入到提供給其它 用戶使用的頁(yè)面中。比如這些代碼包括HTML代碼和客戶端腳本。

應(yīng)用場(chǎng)景:
比如在回復(fù)一篇新聞,回復(fù)過(guò)程中,加入了惡意腳本,當(dāng)這段腳本存儲(chǔ)到數(shù)據(jù)庫(kù)中后,渲染到頁(yè)面中,比如是加載一段js代碼,該js代碼監(jiān)聽頁(yè)面的所有輸入,并通過(guò)ajax發(fā)送至攻擊者的郵箱,則可以攔截用的密碼數(shù)據(jù).
防御: 對(duì)用戶輸入的數(shù)據(jù),前后端都進(jìn)行轉(zhuǎn)義.

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • CSRF概念:CSRF跨站點(diǎn)請(qǐng)求偽造(Cross—Site Request Forgery),跟XSS攻擊一樣,存...
    raincoco閱讀 875評(píng)論 0 1
  • 轉(zhuǎn)載地址:http://www.phpddt.com/reprint/csrf.htmlCSRF概念:CSRF跨站...
    matianhe閱讀 1,034評(píng)論 0 104
  • CSRF 攻擊的應(yīng)對(duì)之道web安全之token和CSRF攻擊CSRF Token 的設(shè)計(jì)是否有其必要性? CSRF...
    拾壹北閱讀 457評(píng)論 0 1
  • HTTP cookie(也稱為web cookie,網(wǎng)絡(luò)cookie,瀏覽器cookie或者簡(jiǎn)稱cookie)是網(wǎng)...
    留七七閱讀 18,386評(píng)論 2 71
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,291評(píng)論 25 708

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