2009-05-19 102 views
6

精確複製How to handle multiple submissions server-side避免雙重表單提交

在手的總任務:防止雙表單提交在基於多用戶網絡應用程序。考慮財務交易。

我有兩種方法可以串聯使用:

  1. 的JavaScript按鈕
    • 的禁用缺點:如果已禁用JavaScript
  2. 後端verfication不工作 - 看看這種用戶的最後一次請求是在多久以前發出的,如果不是很久以前就發出錯誤
    • 缺點:如果兩次提交足夠接近在一起,每個可能無法知道的其他

我要尋找主題專家貢獻他們的最佳實踐,以及深奧的竅門。可以是任何語言和框架,但Django具有特定的興趣。網上已經寫了很多關於手頭的任務,但最好在這裏展示最佳實踐。

+0

已關閉,但類似的問題在哪裏?雙重提交預防標記不會產生完全相同的問題情形。 – vsingh 2010-03-26 15:39:28

回答

8

常用的解決方案是每次生成表單時在服務器上生成一個令牌。將令牌存儲在服務器上,將其作爲隱藏字段添加到表單中,並在使用該令牌獲取表單提交後將其刪除。

如果您在沒有有效令牌的情況下獲得表單提交,這意味着表單已經提交併且忽略它。

這爲將XSRF保護添加到您的項目中提供了額外的優勢。