fiddler CSFF安全漏洞-重點講解refer字段、token字段

1、通常情況下,有三種方法可以被用來防禦CSRF攻擊:

  • 驗證token
  • 驗證HTTP請求的Referer
  • 驗證XMLHttpRequests裏的自定義header

2、測試驗證上面三種方法的步驟

  • 驗證token

注意:token應該要有隨機性和時效性,

時效性:可以等待一段時間後,重新請求是否能請求成功,如果請求成功,那就是有問題

隨機性:每一次token值應該是不一樣的

  • 驗證HTTP請求的Referer

fiddler 找到請求的http後,在頭文件找到refer字段,編輯後,直接搞爲空,或者去掉,修改一下信息去重新請求,看下是否能請求成功,如果請求成功了,那就是有問題

  • 驗證XMLHttpRequests裏的自定義header

哈哈哈,我沒試過,等後面有遇到來補充,下面的圖是從別的地方截圖的,等後面再自己來更新,也不知道啥時候能更新

3、referer字段講解

  • 定義:HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器該網頁是從哪個頁面鏈接過來的,服務器因此可以獲得一些信息用於處理。
  • 作用:

1)防盜鏈

比如政務服務器只允許網站訪問自己的靜態資源,那服務器每次都需要判斷Referer的值是否是zwfw.yn.gov.cn,如果是就繼續訪問,不是就攔截。

2)防止惡意請求

比如靜態請求是.html結尾的,動態請求是.shtml,那麼所有的*.shtml請求,必須 Referer爲我自己的網站纔可以訪問,這就是Referer的作用。

3)空Referer?
空Referer是指Referer頭部的內容爲空,或者,一個HTTP 請求頭中根本不包含Referer,那麼什麼時候HTTP請求會不包含Referer字段呢?
根據Referer的定義,它的作用是指示一個請求是從哪裏鏈接過來,那麼當一個請求並不是由鏈接觸發產生的,那麼自然也就不需要指定這個請求的鏈接來源。

比如,直接在瀏覽器的地址欄中輸入一個資源的URL地址,那麼這種請求是不會包含Referer字段的,因爲這是一個“憑空產生”的HTTP請求,並不是從一個地方鏈接過去的。

4、token字段

  • 定義

Token是服務端生成的一串字符串,以作客戶端進行請求的一個令牌,當第一次登錄後,服務器生成一個Token便將此Token返回給客戶端,以後客戶端只需帶上這個Token前來請求數據即可,無需再次帶上用戶名和密碼。

  • 基於token的驗證方法
  • 使用基於 Token 的身份驗證方法,在服務端不需要存儲用戶的登錄記錄。流程是這樣的:
    客戶端使用用戶名跟密碼請求登錄
    服務端收到請求,去驗證用戶名與密碼
    驗證成功後,服務端會簽發一個 Token,再把這個 Token 發送給客戶端
    客戶端收到 Token 以後可以把它存儲起來,比如放在 Cookie 裏或者 Local Storage 裏
    客戶端每次向服務端請求資源的時候需要帶着服務端簽發的 Token
    服務端收到請求,然後去驗證客戶端請求裏面帶着的 Token,如果驗證成功,就向客戶端返回請求的數據
    APP登錄的時候發送加密的用戶名和密碼到服務器,服務器驗證用戶名和密碼,如果成功,以某種方式比如隨機生成32位的字符串作爲token,存儲到服務器中,並返回token到APP,以後APP請求時,
    凡是需要驗證的地方都要帶上該token,然後服務器端驗證token,成功返回所需要的結果,失敗返回錯誤信息,讓他重新登錄。其中服務器上token設置一個有效期,每次APP請求的時候都驗證token和有效期。







  • 參考:https://www.cnblogs.com/lufeiludaima/p/pz20190203.html

本人QQ:3461838632

一名學習測試3年,工作4年菜鳥測試工程師,有問題可以加QQ私聊哈,可以交流測試的相關問題

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章