防止CSRF的一種方法是在表單中使用令牌。通過大量的文章去之後,我想通了,該步驟通常是沿着這些線路:防止跨站點請求僞造
- 產生被encryted一個令牌值,將其存儲在一個會話,在一個隱藏字段中設置的令牌值表格。
- 在表單處理頁面比較隱藏字段令牌值和這樣的平等對話價值:$ _ POST [「令牌」] == $ _SESSION [「令牌」]
我的問題是我爲什麼要加密令牌值?假設我使用GET方法並且攻擊者知道我將使用一個簡單的整數值,讓我們說1到1000. 如果攻擊者要使用圖像僞造請求,那麼他將不得不發送1000張圖片蠻力請求..好嗎?或者有沒有其他辦法可以做到這一點?
另外我已經讀過,單獨使用POST方法不足以防止CSRF請求。所以我的第二個問題是,如果這是真的,如果我使用POST方法,攻擊者如何成功創建僞造的請求?
你不需要加密令牌,你只需要使它隨機,所以不要使用1到1000之間的數字,通常生成一個長的令牌sha1或md5,一些隨機的字符串就足夠了。如果您的網站上有表單,我可以在我的網站上覆製表單的「操作」指向您的網站,並在我的網站上提交表單的JavaScript,並且它將顯示爲表單的POST請求。 –