web安全:CSRF攻擊原理以及防御

來自百度百科

CSRF(Cross-site request forgery)跨站請求偽造酗捌,也被稱為“One Click Attack”或者Session Riding垢乙,通常縮寫為CSRF或者XSRF阿纤,是一種對網(wǎng)站的惡意利用甚负。盡管聽起來像跨站腳本(XSS)否淤,但它與XSS非常不同喉恋,XSS利用站點內的信任用戶沃饶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網(wǎng)站。與XSS攻擊相比轻黑,CSRF攻擊往往不大流行(因此對其進行防范的資源也相當稀少)和難以防范糊肤,所以被認為比XSS更具危險性。

例子

CSRF攻擊原理圖

CSRF攻擊攻擊原理及過程如下:

   1. 用戶打開瀏覽器苔悦,訪問受信任銀行網(wǎng)站轩褐,輸入用戶名和密碼請求登錄網(wǎng)站;
   2.在用戶信息通過驗證后玖详,銀行網(wǎng)站產(chǎn)生Cookie信息并返回給瀏覽器,此時用戶登錄網(wǎng)站成功勤讽,可以正常發(fā)送請求到網(wǎng)站蟋座;

   3. 用戶未退出銀行網(wǎng)站之前,在同一瀏覽器中脚牍,打開一個TAB頁訪問其他網(wǎng)站B

   4. 這時候網(wǎng)站B 已被黑客注入誘導信息向臀,加入是一張圖片,圖片地址指向
     src=”http://bank.example/withdraw?account=bob&amount=1000000&for=黑客
     點擊之后轉賬給黑客這個賬戶
   5. 瀏覽器在接收到這些攻擊性代碼請求后,根據(jù)網(wǎng)站B的請求诸狭,在用戶不知情的情況下攜帶Cookie信息券膀,根據(jù)用戶的Cookie信息以C的權限處理該請求,導致來自黑客請求惡意代碼被執(zhí)行驯遇。 

這是原理, 攻擊者盜用了你的身份芹彬,以你的名義發(fā)送惡意請求,對服務器來說這個請求是完全合法的叉庐,但是卻完成了攻擊者所期望的一個操作舒帮,比如以你的名義發(fā)送郵件、發(fā)消息陡叠,盜取你的賬號玩郊,添加系統(tǒng)管理員,甚至于購買商品枉阵、虛擬貨幣轉賬等译红。

如何防御CSRF攻擊

1、驗證 HTTP Referer 字段

釋:referer : 來路;提交方;來源網(wǎng)址
根據(jù) HTTP 協(xié)議兴溜,在 HTTP 頭中有一個字段叫 Referer侦厚,它記錄了該 HTTP 請求的來源地址反璃。

驗證referer

也就是說,服務器會驗證客戶端的請求來源假夺,如果本網(wǎng)站請求的則響應淮蜈,否則不響應。

但是即使這樣已卷,驗證 HTTP Referer 字段 這種方式也存在安全隱患

1.對于某些瀏覽器梧田,比如 IE6 或 FF2,目前已經(jīng)有一些方法可以篡改 Referer 值
2.用戶自己可以設置瀏覽器使其在發(fā)送請求時不再提供 Referer

2.加驗證碼驗證

但這種方式涉及到頁面交互侧蘸,在通常情況下裁眯,驗證碼能很好遏制CSRF攻擊。但是出于用戶體驗考慮讳癌,網(wǎng)站不能給所有的操作都加上驗證碼穿稳。因此驗證碼只能作為一種輔助手段,不能作為主要解決方案晌坤。

3.使用 token (Anti CSRF Token)

可以理解是防偽

例子:

  1. 用戶訪問某個表單頁面逢艘。

  2. 服務端生成一個Token,放在用戶的Session中骤菠,或者瀏覽器的Cookie中它改。

  3. 在頁面表單附帶上Token參數(shù)。

  4. 用戶提交請求后商乎, 服務端驗證表單中的Token是否與用戶Session(或Cookies)中的Token一致央拖,一致為合法請求,不是則非法請求鹉戚。

token

這個Token的值必須是隨機的鲜戒。由于Token的存在,攻擊者無法再構造一個帶有合法Token的請求實施CSRF攻擊抹凳。另外使用Token時應注意Token的保密性遏餐,盡量把敏感操作由GET改為POST,以form或AJAX形式提交却桶,避免Token泄露境输。

總結

通常使用Anti CSRF Token來防御CSRF攻擊,同時要注意Token的保密性和隨機性颖系。

參考文獻:

淺談CSRF攻擊方式

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末嗅剖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嘁扼,更是在濱河造成了極大的恐慌信粮,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趁啸,死亡現(xiàn)場離奇詭異强缘,居然都是意外死亡督惰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門旅掂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赏胚,“玉大人,你說我怎么就攤上這事。” “怎么了皿渗?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長典勇。 經(jīng)常有香客問我,道長叮趴,這世上最難降的妖魔是什么割笙? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮眯亦,結果婚禮上伤溉,老公的妹妹穿的比我還像新娘。我一直安慰自己搔驼,他們只是感情好谈火,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舌涨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扔字。 梳的紋絲不亂的頭發(fā)上囊嘉,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音革为,去河邊找鬼扭粱。 笑死,一個胖子當著我的面吹牛震檩,可吹牛的內容都是我干的琢蛤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼抛虏,長吁一口氣:“原來是場噩夢啊……” “哼博其!你這毒婦竟也來了?” 一聲冷哼從身側響起迂猴,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤慕淡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沸毁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體峰髓,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡傻寂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了携兵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疾掰。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖徐紧,靈堂內的尸體忽然破棺而出静檬,到底是詐尸還是另有隱情,我是刑警寧澤浪汪,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布巴柿,位于F島的核電站,受9級特大地震影響死遭,放射性物質發(fā)生泄漏广恢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一呀潭、第九天 我趴在偏房一處隱蔽的房頂上張望钉迷。 院中可真熱鬧,春花似錦钠署、人聲如沸糠聪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舰蟆。三九已至,卻和暖如春狸棍,著一層夾襖步出監(jiān)牢的瞬間身害,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工草戈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留塌鸯,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓唐片,卻偏偏與公主長得像丙猬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子费韭,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容