了解 CSRF
P粉056618053
P粉056618053 2023-10-23 13:57:29

我不明白使用「挑戰令牌」如何增加任何形式的預防:什麼值應該與什麼進行比較?

來自 OWASP:

一般來說,開發者只需要 產生此令牌一次 目前會話。初始後 該代幣的生成,其值為 儲存在會話中並被使用 對於每個後續請求,直到 會話過期。

如果我正確理解了這個過程,就會發生這樣的情況。

我登入 http://example.com 並建立一個包含此隨機令牌的會話/cookie。然後,每個表單都包含一個隱藏輸入,該輸入還包含來自會話的隨機值,該值在表單提交時與會話/cookie 進行比較。

但這能實現什麼目的呢?您不是只是獲取會話數據,將其放入頁面中,然後將其與完全相同的會話數據進行比較嗎?看起來像是循環推理。這些文章一直在談論遵循“同源策略”,但這沒有任何意義,因為所有 CSRF 攻擊都與用戶同源,只是欺騙用戶做出他/她不希望的操作。

除了將令牌作為查詢字串附加到每個 URL 之外,還有其他選擇嗎?看起來非常醜陋且不切實際,並且使用戶更難添加書籤。

P粉056618053
P粉056618053

全部回覆(2)
P粉794851975

CSRF 透過類比解釋 - 範例:

  • 您用鑰匙打開家的前門。
  • 進去之前,先與鄰居交談
  • 當您正在進行此對話時,請在門未鎖的情況下走進去。
  • 他們進去了,假裝是你!
  • 你家裡的人沒有註意到任何不同 - 你的妻子就像是,「哦,混蛋*,他在家」。

冒充者拿走了你所有的錢,也許在出去的時候玩了一些 Xbox......

摘要

CSRF 基本上依賴於這樣一個事實:您打開了家門,然後將其打開,讓其他人可以簡單地走進來並假裝是您。

如何解決這個問題?

當您第一次打開家門時,門衛會給您一張紙,上面寫著一個很長且非常隨機的數字:

現在,如果你想進入自己的房子,你必須向門衛出示那張紙才能進去。

所以現在當冒充者試圖進入你的房子時,警衛會問:

「紙上寫的隨機數是多少?」

如果冒充者沒有正確的數字,那麼他就無法進入。要嘛他必須正確猜測隨機數 - 這是一項非常困難的任務。更糟的是,隨機數的有效期限只有 20 分鐘(例如)。所以知道模仿者必須猜對,不只如此,他只有20分鐘的時間才能得到正確答案。這實在是太費勁了!所以他放棄了。

當然,這個類比有點牽強,但我希望它對你有幫助。

**crud =(建立、讀取、更新刪除)

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!