瀏覽器安全之CSRF

之前所提及XSS攻擊最終都是將惡意腳本注入到頁(yè)面中,進(jìn)行后續(xù)操作。還有另一種類型,跨站請(qǐng)求偽造(CSRF)攻擊。

CSRF攻擊

  • 在用戶登錄了A網(wǎng)站后,擁有了A網(wǎng)站的登錄狀態(tài)。
  • 這時(shí)就可進(jìn)行一些和當(dāng)前賬戶相關(guān)的請(qǐng)求,偽造請(qǐng)求就可模擬真實(shí)用戶進(jìn)行操作。
  • 偽造請(qǐng)求通常在被誘導(dǎo)打開(kāi)的第三方網(wǎng)站進(jìn)行。

偽造請(qǐng)求的形式

  • 偽造請(qǐng)求在打開(kāi)的第三方頁(yè)面中進(jìn)行,可能會(huì)隱藏在各種加載第三方資源的方式中。
  • 比如img標(biāo)簽src屬性、表單數(shù)據(jù)的提交、誘導(dǎo)性超鏈接等,get類型、post類型都可偽造。

防止CSRF攻擊

依據(jù)上述CSRF特點(diǎn):

  • 基于用戶登錄狀態(tài)。
  • 在第三方頁(yè)面?zhèn)卧煺?qǐng)求。
    防范可有如下方面:

Cookie中SameSite字段

  • 偽造的請(qǐng)求之所以可以利用用戶登錄狀態(tài),是因?yàn)榘l(fā)送請(qǐng)求時(shí)會(huì)攜帶Cookie信息,而Cookies中常常存有用戶登錄狀態(tài)。
  • 在Cookie字段中設(shè)置SameSite字段值,聲明是發(fā)送請(qǐng)求時(shí)是否允許攜帶Cookie。

SameSite字段值

Strict

完全禁止第三方的Cookie發(fā)送。

Lax

額外允許第三方網(wǎng)站發(fā)起Get請(qǐng)求時(shí)發(fā)送Cookie,是當(dāng)前的默認(rèn)值。

None

不做任何限制,任意情況下都可發(fā)送Cookie,是以前的默認(rèn)值。

驗(yàn)證請(qǐng)求的來(lái)源站點(diǎn)

  • 如果偽造請(qǐng)求成功發(fā)送到了服務(wù)器端,服務(wù)器可檢驗(yàn)請(qǐng)求的來(lái)源是否可靠,是否有偽造的可能性。
  • 可通過(guò)報(bào)文的Origin字段和Referer字段獲取到請(qǐng)求的來(lái)源。
  • 其中,Origin字段不包含來(lái)源的路徑信息,Referer包含完整的路徑信息。
  • 優(yōu)先判斷Origin更為合理。

CSRF Token

  • 用戶在請(qǐng)求頁(yè)面時(shí),服務(wù)端可生成Token(也就是一串字符),插入到返回的頁(yè)面中。
  • 在發(fā)送請(qǐng)求時(shí),需攜帶頁(yè)面中的Token。而第三方網(wǎng)站獲取不到頁(yè)面中的內(nèi)容,獲取不到Token。
  • 服務(wù)端接收到請(qǐng)求時(shí),驗(yàn)證Token,不正確時(shí)拒絕請(qǐng)求。
最后編輯于
?著作權(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ù)。

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