我混淆了會話 ID 和 CSRF 令牌。所以我搜索了一下并了解了一點。會話 ID 用于驗證用戶。CSRF 令牌用于驗證請求本身。我的問題是服務器何時向用戶發送 CSRF 令牌?
例如,當客戶端第一次訪問www.sample.com時,服務器將會話ID 發送給客戶端。(是嗎?)客戶端想要更改他的密碼。所以他來到www.sample.com/change客戶可以在那里更改密碼并位于更改按鈕(發布)。那個時候(當客戶端訪問www.sample.com/change 時)服務器向客戶端發送 CSRF 令牌?或者當客戶端發布他們的資料然后中間件發送 CSRF 并在服務器獲得發布資料之前進行比較?
uj5u.com熱心網友回復:
服務器在客戶端訪問www.sample.com/change頁面時發送 CSRF 令牌。通常,CSRF 令牌作為<meta>標簽或隱藏<input>標簽等隱藏的 html 元素嵌入 HTML 檔案中。因此,當客戶端發送 GET 請求以檢索www.sample.com/change頁面時,CSRF 令牌將作為 HTML 頁面的一部分回傳。
資源:
- https://portswigger.net/web-security/csrf/tokens
額外考慮
假設我們采用您問題中描述的“中間件”方法。在這種情況下,CSRF 令牌將在收到 POST/PUT 請求后在服務器中生成。然后,服務器無法辨別請求是由合法站點 ( www.sample.com) 還是模擬站點 ( www.malicious.com) 生成的,因為這兩個請求看起來可能完全相同(請注意,惡意站點可以欺騙請求標頭,例如origin)。因此這種方法不能防止 CSRF 攻擊。CSRF 令牌需要從客戶端發送,以便服務器可以識別來自合法網站的請求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/350351.html
下一篇:無論實際值如何,條件始終評估為真
