如何防止表单重读提交
摘要:如何防止表单重读提交
如何防止表单重读提交
一、表单反复提交的情况:
1、点击提交按钮两次;
2、点击刷新按钮;
3、利用阅读器后退按钮反复之前的操作,导致反复提交表单;
4、利用阅读器历史记载反复提交表单;
5、阅读器反复的 HTTP 申请。
二、防止表单反复提交的方法
1、禁掉提交按钮
表单提交后利用 Javascript 使提交按钮disable。这种方法防止心急的用户屡次点击按钮。但有个成绩,假设客户端把 Javascript 给制止掉,这种方法就无效了。
2、Post/Redirect/Get 形式
在提交后执行页面重定向,这就是所谓的 Post-Redirect-Get (PRG)形式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交胜利信息页面。
这能避免用户按 F5 导致的反复提交,而其也不会出现阅读器表单反复提交的警告,也能消弭按阅读器行进和后退按导致的异样成绩。
3、在 session 中寄存一个特殊标志
当表单页面被申请时,生成一个特殊的字符标志串,存在 session 中,同时放在表单的隐藏域里。承受解决表单数据时,反省标识字串能否存在,并立即从 session 中删除它,然后失常解决数据。假设发现表单提交里没有有效的标志串,这阐明表单已经被提交过了,疏忽这次提交。这使你的 web 运用有了更高级的 XSRF 保护。
4、利用Cookie解决
利用Cookie记载表单提交的形状,依据其形状可能反省能否已经提交表单。
5、在数据库里减少解放
在数据库里减少惟一解放或创建惟一索引,防止出现反复数据。这是最有效的防止反复提交数据的方法。
1、点击提交按钮两次;
2、点击刷新按钮;
3、利用阅读器后退按钮反复之前的操作,导致反复提交表单;
4、利用阅读器历史记载反复提交表单;
5、阅读器反复的 HTTP 申请。
二、防止表单反复提交的方法
1、禁掉提交按钮
表单提交后利用 Javascript 使提交按钮disable。这种方法防止心急的用户屡次点击按钮。但有个成绩,假设客户端把 Javascript 给制止掉,这种方法就无效了。
2、Post/Redirect/Get 形式
在提交后执行页面重定向,这就是所谓的 Post-Redirect-Get (PRG)形式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交胜利信息页面。
这能避免用户按 F5 导致的反复提交,而其也不会出现阅读器表单反复提交的警告,也能消弭按阅读器行进和后退按导致的异样成绩。
3、在 session 中寄存一个特殊标志
当表单页面被申请时,生成一个特殊的字符标志串,存在 session 中,同时放在表单的隐藏域里。承受解决表单数据时,反省标识字串能否存在,并立即从 session 中删除它,然后失常解决数据。假设发现表单提交里没有有效的标志串,这阐明表单已经被提交过了,疏忽这次提交。这使你的 web 运用有了更高级的 XSRF 保护。
4、利用Cookie解决
利用Cookie记载表单提交的形状,依据其形状可能反省能否已经提交表单。
5、在数据库里减少解放
在数据库里减少惟一解放或创建惟一索引,防止出现反复数据。这是最有效的防止反复提交数据的方法。