2011-04-05 293 views

回答

4

帶表單的隨機數的目標通常是兩個方面:確保數據只提交一次,並確保用戶實際提交。第二點幫助防範跨站點請求僞造:http://en.wikipedia.org/wiki/Cross-site_request_forgery

處理它們取決於上下文。如果用戶填寫表單並且現時失效,請刷新頁面(預先填寫數據),說一些像「Oops有問題,請檢查您的輸入並再次提交」的良性內容。有效的用戶可以擊中提交,攻擊會受到挫敗,或者用戶至少知道發生了什麼。

由於幾個原因,驗證可能會失敗。如果您已啓用某種形式的瀏覽器緩存,則用戶訪問一個表單(使用給定的隨機數),然後導航到另一個表單(使用它自己的隨機數),並通過後退按鈕返回到第一個表單,nonce可能會失敗。通過允許瀏覽器緩存發生,他們沒有刷新頁面,並且你的服務器可能只會在會話中爲他們存儲一個有效的隨機數,所以他們不會匹配。一個有效的用例和一個失敗的nonce(沒有一個我會失眠,只是確保表單被重新填充)。

我的建議總的來說是:告訴用戶再次提交,巧妙地暗示他們應該檢查他們的輸入,使得再次提交容易。

+0

非常感謝你的啓發我。 – 2011-04-05 22:44:55

相關問題