在我的網站上,我將一個隱藏字段放入一個隨機值中,同時我還將該值存儲在會話中。提交表單時,我確保提交的值與會話值相匹配。您是否需要提交cookie作爲CSRF保護的一部分?
CSRF保護足夠嗎?任何黑客攻擊網站以迫使用戶不知不覺地發佈到我的網站的人都不知道我生成了什麼CSRF標記,因此他們的攻擊將失敗。獲取該令牌的唯一方法是對服務器執行GET請求,並將該Cookie解壓出來併發布。
這可能嗎?或者換句話說,你是否必須包含一個cookie作爲CSRF保護的一部分?我沒有看到它在這裏提到:https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet#Disclosure_of_Token_in_URL
除了'雙提交cookie'部分。
謝謝您的回答。你認爲如果你使用cookie,你不需要在會話中存儲任何東西?你可以創建一個cookie,將一個隨機值放入cookie和一個隱藏字段,並檢查它們是否匹配?將cookie指定爲HttpOnly,以防止黑客讀取內容。 – NibblyPig
不幸的是,您將不得不將其存儲在服務器端進行驗證。如果不這樣做,惡意服務器可以提交「隱藏字段值」和「cookie」(基本上任何組成的值都匹配)並繞過您的控件。換句話說,他們不需要獲得原始的令牌值,因爲他們可以在沒有它的情況下通過測試。如果您嘗試僅使用某些有效的值來測試欺騙,則攻擊者可以通過使用您的站點(如正常情況)並使用該值來收集一個值。這是討厭的生意:-) –