防御 CSRF 攻擊,可以在表單頁面的表單中生成一個(gè) token,寫在隱藏域中,同時(shí)保存在 session,使用 POST 方式,服務(wù)器端驗(yàn)證 token,那么如下這種方式攻擊為什么不可以?
在中間網(wǎng)站我請(qǐng)求兩次,第一次通過 GET 方式請(qǐng)求這個(gè)表單頁面從而獲取 token,第二次帶上這個(gè) token 發(fā)起 POST 請(qǐng)求,這樣不就成功偽裝了嗎?我這個(gè)想法應(yīng)該有問題,但好像又可以,錯(cuò)在哪?
在中間網(wǎng)站我請(qǐng)求兩次,第一次通過 GET 方式請(qǐng)求這個(gè)表單頁面從而獲取 token,第二次帶上這個(gè) token 發(fā)起 POST 請(qǐng)求,這樣不就成功偽裝了嗎?我這個(gè)想法應(yīng)該有問題,但好像又可以,錯(cuò)在哪?
中間網(wǎng)站是什么?
如果是指中間人攻擊,那么,你應(yīng)該關(guān)注的是 HTTPS。CSRF 不處理中間人攻擊。
如果是指第三方網(wǎng)站,那么,除非你的網(wǎng)站通過 Access-Control-Allow-Origin 頭允許,否則第三方網(wǎng)站無法讀取請(qǐng)求返回的內(nèi)容(跟其它一些跨域請(qǐng)求的處理一樣,能請(qǐng)求,但是未經(jīng)允許不得訪問),也就拿不到 token。
PS: 這么基礎(chǔ)的問題,那么多回答,竟然只有一個(gè)稍微靠譜點(diǎn)的…………
CSRF的理解應(yīng)該是沒問題的
我說一下我的疑問點(diǎn):
1.第一次通過 GET 方式請(qǐng)求這個(gè)表單頁面從而獲取 token
關(guān)注你的token獲取,token本身是什么,就是服務(wù)器端對(duì)你這個(gè)訪問者的一個(gè)標(biāo)識(shí)。
表單提交頁面,如果本身不需要你登錄,那么本身就可以隨便攻擊,因?yàn)榉?wù)器端根本無法識(shí)別的你的身份。
那么如果你登錄了,你通過使用這個(gè)token進(jìn)行攻擊,已經(jīng)暴露你是誰。也就不存在偽裝的意義。
所以就我理解,這個(gè)不能稱為所謂的攻擊,這能說模仿請(qǐng)求。。
我認(rèn)為的攻擊應(yīng)該是這樣的,敵人無法判斷你是誰,然而你卻能獲取到資源。
我自己回答一下:
首先,我說的第一步通過中間頁用 GET 方法請(qǐng)求表單頁面,獲取到 token,這個(gè)沒問題,第二步,把獲取到的 token 用于動(dòng)態(tài)構(gòu)造的表單中發(fā)送 POST 請(qǐng)求,這個(gè)也可以實(shí)現(xiàn),但是第二步請(qǐng)求 token 驗(yàn)證不會(huì)成功。
關(guān)鍵在于 session 機(jī)制,通過中間頁去請(qǐng)求服務(wù)器頁面,生成 token 并放在 session 中,這個(gè) token 只對(duì)中間頁 sessionid 標(biāo)識(shí)有效,因?yàn)檫@個(gè)請(qǐng)求是中間頁發(fā)起的,而不是用戶 cookie 中的 sessionid,所以服務(wù)器在驗(yàn)證 token 的時(shí)候會(huì)發(fā)現(xiàn)不一致,用戶 sessionid 對(duì)應(yīng)的 token 的值,跟中間頁 GET 請(qǐng)求頁面生成的 token 值不一致。
首先,token 是在表單隱藏域中,第三方通過 get 方式如何獲???
其次,提供 token 的網(wǎng)站要避免通過 get 方式傳遞 token。
token 的方式不是絕對(duì)安全的,但是可以通過以下方式提升其安全性:
Referer 和 token 結(jié)合使用,服務(wù)端判斷 token 之前,先判斷 Referer 是否為本站;token,限制 token 的時(shí)效性;沒有絕對(duì)安全的方法,但是可以盡量遵循安全的編程規(guī)范。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。