CSRF攻擊及預防

2021-08-05 20:36:34 字數 1350 閱讀 1098

參考部落格 :

**csrf攻擊方式

csrf 攻擊的應對之道

csrf(cross-site request forgery),中文名稱:跨站請求偽造,也被稱為:one click attack/session riding,縮寫為:csrf/xsrf。

你這可以這麼理解csrf攻擊:攻擊者盜用了你的身份,以你的名義傳送惡意請求。csrf能夠做的事情包括:以你名義傳送郵件,發訊息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬……造成的問題包括:個人隱私洩露以及財產安全。

到目前,這也是一些重要站點需要重點防護的攻擊,與xss攻擊占有相同的比例。

乙個銀行轉賬的操作作為例子(僅僅是例子,真實的銀行**沒這麼傻:>)

1. 例項1

銀行**a,它以get請求來完成銀行轉賬的操作,如:

src=>

首先,你登入了銀行**a,然後訪問危險**b,噢,這時你會發現你的銀行賬戶少了1000塊……

為什麼會這樣呢?原因是銀行**a違反了http規範,使用get請求更新資源。在訪問危險**b的之前,你已經登入了銀行**a,而b中的以get的方式請求第三方資源(這裡的第三方就是指銀行**了,原本這是乙個合法的請求,但這裡被不法分子利用了),所以你的瀏覽器會帶上你的銀行**a的cookie發出get請求,去獲取資源:

「」

,結果銀行**伺服器收到請求後,認為這是乙個更新資源操作**賬操作),所以就立刻進行轉賬操作……

2. 例項2

**該用接受post請求,但是,攻擊者可以利用iframe去構造post請求發給被攻擊**,同樣中招。

1. 規範化**請求方法

get方法只獲取資源,不更改伺服器上的內容。

2. 在表單中增加偽隨機數,服務同步校驗

這是在其他危險頁面拿不到信任**的cookie為前提,否則,依然可以發起攻擊。

3. 驗證碼校驗

有的時候,對使用者不友好。

4. 驗證 http referer 字段

並不能確保萬無一失,因為在一些有漏洞的瀏覽器,referer可能會被篡改。

5. 在 http 頭中自定義屬性並驗證

和上一種方法不同的是,這裡並不是把 token 以引數的形式置於 http 請求之中,而是把它放到 http 頭中自定義的屬性裡。通過 xmlhttprequest 這個類,可以一次性給所有該類請求加上 csrftoken 這個 http 頭屬性,並把 token 值放入其中。這樣解決了上種方法在請求中加入 token 的不便,同時,通過 xmlhttprequest 請求的位址不會被記錄到瀏覽器的位址列,也不用擔心 token 會透過 referer 洩露到其他**中去。

然而這種方法的侷限性非常大。

如何預防 CSRF 攻擊?

user02 攻擊者 清楚地了解 a,並建立了具有攻擊性的 b。user01 受害者 登入了 a 後,在自身的 session 未失效的情況下,訪問了惡意 b。假如,user01 還未退出 a,在同一瀏覽器中,訪問了惡意 b。b 是 user02 建立的,user02 清楚地知道 a 的工作模式。b...

有效預防xss XSS攻擊及預防

跨站指令碼攻擊 cross site scripting 為不和層疊樣式表 cascading style sheets,css 的縮寫混淆,故將跨站指令碼攻擊縮寫為xss。惡意攻擊者往web頁面裡插入惡意script php,js等 當使用者瀏覽該頁之時,嵌入其中web裡面的script 會被執行...

CSRF 攻擊及防禦

1.csrf 是什麼?csrf cross site request forgery 中文名稱 跨站請求偽造,也被稱為 one click attack session riding,縮寫為 csrf xsrf。2.scrf有哪些危害?攻擊者可以利用你的身份進行一些操作 傳送郵件,發訊息,盜取你的賬...