CSRF知識(shí)點(diǎn)總結(jié)面試版

CSRF跨站請(qǐng)求偽造

1.本質(zhì):代碼層次上將,CSRF能攻擊成功是攻擊者能猜到你重要參數(shù),因而偽造請(qǐng)求。

2.原理:CSRF攻擊建立在瀏覽器和web服務(wù)器的會(huì)話之中,并且能欺騙用戶(hù)訪問(wèn)url。發(fā)起的目標(biāo)是通過(guò)偽造的用戶(hù)請(qǐng)求,該請(qǐng)求不是用戶(hù)想發(fā)出去的請(qǐng)求,服務(wù)器或服務(wù)來(lái)說(shuō),該請(qǐng)求是完全合法的請(qǐng)求,但卻完成了攻擊者的期望操作。

3.局限性(前提條件):

a.目標(biāo)站點(diǎn)不能有檢查referer頭的操作,或許被攻擊者的瀏覽器允許referer欺騙。

b.攻擊者必須在目標(biāo)站點(diǎn)找到啊一個(gè)表單的提交入口,或者有類(lèi)似的URL(例如用來(lái)轉(zhuǎn)錢(qián),修改受害者郵箱或者密碼)

c.攻擊者必須覺(jué)得所有的表單或者URL參數(shù)中的正確的值;如果有秘密驗(yàn)證值或者ID,攻擊者沒(méi)有猜對(duì),攻擊很可能不成功。

d.攻擊者必須誘使受害者訪問(wèn)有惡意代碼的頁(yè)面,并且此時(shí)受害者已經(jīng)登錄到目標(biāo)站點(diǎn)。

4.常見(jiàn)攻擊手段:

A.CSRF作用范圍內(nèi)的威脅:

a.論壇的交互區(qū)。如用戶(hù)提交的一些圖像,url指向一個(gè)惡意網(wǎng)址,很可能導(dǎo)致CSRF攻擊。且這些請(qǐng)求無(wú)法自定義HTTP Header,必須使用GET方法。

b.web所有者的攻擊。指擁有自己獨(dú)立域名,HTTPS證書(shū)和web服務(wù)器的個(gè)人,一旦訪問(wèn)其所在域名,攻擊者可同時(shí)用GET和POST方法發(fā)起跨站請(qǐng)求,即為CSRF攻擊。

c.網(wǎng)絡(luò)攻擊者。指能控制用戶(hù)網(wǎng)絡(luò)連接的惡意代理,如通過(guò)控制無(wú)限路由或DNS服務(wù)器控制用戶(hù)的網(wǎng)絡(luò)連接,該攻擊需要更多的準(zhǔn)備及資源。

B.CSRF作用范圍外的威脅(聯(lián)合攻擊):

a.跨站腳本(XSS)。如果網(wǎng)站本身存在XSS漏洞,那么CSRF的防御將毫無(wú)意義,因?yàn)橛脩?hù)會(huì)話的完整性和保密性已經(jīng)告破。

b.惡意軟件。如果用戶(hù)在攻擊者電腦或者移動(dòng)端設(shè)備上運(yùn)行著惡意軟件,那么攻擊者可以控制用戶(hù)的瀏覽器,向那些可信的網(wǎng)站注入腳本,那么所有基于瀏覽器的防御策略都會(huì)失效。

c.證書(shū)錯(cuò)誤。如果用戶(hù)的HTTPS證書(shū)錯(cuò)誤時(shí),還繼續(xù)點(diǎn)擊訪問(wèn),那么HTTPS能提供的安全防護(hù)措施毫無(wú)意義,也包括CSRF。

d.釣魚(yú)。訪問(wèn)釣魚(yú)網(wǎng)站時(shí),用戶(hù)輸入的個(gè)人信息,很可能導(dǎo)致釣魚(yú)攻擊。

5.CSRF常見(jiàn)防御方法:

a.驗(yàn)證碼方式(不完全解決)。驗(yàn)證碼強(qiáng)制用戶(hù)必須和應(yīng)用進(jìn)行交互,才能完成最終的請(qǐng)求,在一定程度上能遏制CSRF攻擊。

b.查看Referer(不完全解決)。查看請(qǐng)求源,一般來(lái)說(shuō),Referer的值必須為當(dāng)前表單所在頁(yè)面,若不在此頁(yè)面,則可能遭受CSRF攻擊。(不靠譜原因:服務(wù)器并非隨時(shí)都能獲得Referer,只能監(jiān)控是否發(fā)生,并且不能防范統(tǒng)一域上的CSRF攻擊)

c.設(shè)置Token值。從本質(zhì)入手,本質(zhì)上說(shuō),CSRF是攻擊者猜到了你的重要參數(shù),那么根本解決辦法就是參數(shù)加密,或者用一次性隨機(jī)值代替。典型的就是Token的設(shè)計(jì)。

Token是一個(gè)隨機(jī)參數(shù),不可預(yù)測(cè),需同時(shí)放在表單和session中,提交請(qǐng)求時(shí)服務(wù)器只需驗(yàn)證表單中Token與用戶(hù)Session中的Token是否一致即可。(Token防御CSRF時(shí)的詳細(xì)步驟:

1.每次用戶(hù)登錄會(huì)隨機(jī)生成一段字符串,并存儲(chǔ)在Session中。

2.在敏感操作中假如隱藏標(biāo)簽,value即為Session中保存的字符串。

3.提交請(qǐng)求后,服務(wù)器端的Session中字符串與提交的Token對(duì)比,如果一直,課認(rèn)為是正常請(qǐng)求,否則可能是CSRF攻擊

4.更新Token。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容