为什么这不足以防止重复提交表格

Why is this not enough for preventing double submission of form?

本文关键字:提交 表格 不足以 为什么      更新时间:2023-09-26

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

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

但是,当我查看有关此的其他问题时,人们提出了过于复杂的解决方案,这使我认为上述内容还不够。

如果您只想防止人们意外提交两次表单,这有什么缺点?

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

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

防止双重提交的唯一真正方法是在服务器端检查它。

客户端

代码非常不可靠,客户端可以很容易地更改。