为什么这不足以防止双重提交表单?

时间:2013-11-08 16:39:40

标签: javascript forms

我一直使用的解决方案如下:

$('form').submit(function(){
  $('input[type=submit]', this).attr('disabled', 'disabled');
});

然而,当我看到有关此问题的其他问题时,人们提出过于复杂的解决方案,这些解决方案让我认为上述内容是不够的。

如果您只是想阻止人们意外地提交表单两次,会有什么缺点?

2 个答案:

答案 0 :(得分:0)

唯一可以阻止双重提交的真实方式是在服务器端检查它。

客户端代码非常不可靠,客户可以非常轻松地 进行更改。

答案 1 :(得分:0)

这适用于意外双重提交,但大多数时候,这种过于复杂的方法是针对黑客和其他试图规避您安全的用户实施的,例如那些试图通过刷新数百名用户来垃圾网站的人页。

这就是为什么许多表单使用由服务器生成的令牌,该令牌仅对一次提交有效,而一个ip只获得一个令牌。