CSRF

CSRF是什麼?瀏覽器

  CSRF(Cross-site request forgery),中文名稱:跨站請求僞造,也被稱爲:one click attack/session riding,縮寫爲:CSRF/XSRF。安全

  是一種挾制用戶在當前已登陸的Web應用程序上執行非本意的操做的攻擊方法。跟跨網站腳本(XSS)相比,XSS 利用的是用戶對指定網站的信任,CSRF 利用的是網站對用戶網頁瀏覽器的信任。攻擊者盜用了你的身份,以你的名義發送惡意請求。CSRF可以作的事情包括:以你名義發送郵件,發消息,盜取你的帳號,甚至於購買商品,虛擬貨幣轉帳......形成的問題包括:我的隱私泄露以及財產安全。cookie

 

圖中 Browse 是瀏覽器,WebServerA 是受信任網站/被攻擊網站 A,WebServerB 是惡意網站/點 擊網站 B。
(1)一開始用戶打開瀏覽器,訪問受信任網站 A,輸入用戶名和密碼登錄請求登錄網站 A。
(2)網站 A 驗證用戶信息,用戶信息經過驗證後,網站 A 產生 Cookie 信息並返回給瀏覽器。
(3)用戶登錄網站 A 成功後,能夠正常請求網站 A。
(4)用戶未退出網站 A 以前,在同一瀏覽器中,打開一個 TAB 訪問網站 B。
(5)網站 B 看到有人方式後,他會返回一些攻擊性代碼。
(6)瀏覽器在接收到這些攻擊性代碼後,根據網站B的請求,在用戶不知情的狀況下攜帶Cookie信息,向網站A發出請求。網站A並不知道該請求實際上是由B發起的,因此會根據用戶的Cookie信息以用戶的權限處理該請求,致使來自網站B的惡意代碼被執行。
 

從上面 CSRF 攻擊原理能夠看出,要完成一次 CSRF 攻擊,須要被攻擊者完成兩個步驟:session

1.登錄受信任網站 A,並在本地生成 COOKIE。
2.在不登出 A 的狀況下,訪問危險網站 B。 post

若是不知足以上兩個條件中的一個,就不會受到 CSRF 的攻擊,如下狀況可能會致使 CSRF: 網站

1.登陸了一個網站後,打開一個 tab 頁面並訪問另外的網站。
2.關閉瀏覽器了後,本地的 Cookie 還沒有過時,你上次的會話尚未已經結束。(事實上,關閉瀏覽器不能結束一個會話,但大多數人都會錯誤的認爲關閉瀏覽器就等於退出登陸/結束會話了......)blog

 

解決辦法:token

1.經過 referer、token 或者 驗證碼 來檢測用戶提交。it

2.儘可能不要在頁面的連接中暴露用戶隱私信息。io

3.對於用戶修改刪除等操做最好都使用post 操做 。

4.避免全站通用的cookie,嚴格設置cookie的域。

相關文章
相關標籤/搜索