6

完全重复如何在服务器端处理多个提交

手头的一般任务:防止在基于 Web 的多用户应用程序中提交双重表单。想想金融交易。

我有两种可以串联使用的方法:

  1. JavaScript 禁用按钮
    • 缺点:如果禁用 JavaScript,则不起作用
  2. 后端验证 - 查看此类型的最后一个请求来自该用户多久之前,如果不是太久之前发出错误
    • 缺点:如果两个提交的距离足够近,每个提交都可能无法察觉到另一个

我正在寻找主题专家来贡献他们的最佳实践以及深奥的技巧。可以是任何语言和框架,但 Django 特别感兴趣。网上已经写了很多关于手头任务的文章,但如果能在此处展示最佳实践,那就太好了。

4

1 回答 1

8

常见的解决方案是每次生成表单时在服务器上生成一个令牌。将令牌存储在服务器上,将其作为隐藏字段添加到表单中,并在使用该令牌提交表单后将其删除。

如果您收到没有有效令牌的表单提交,则表示该表单已经提交并忽略它。

这具有为您的项目添加 XSRF 保护的额外优势。

于 2009-05-19T00:36:20.623 回答