JHa*_*ey1 25 web-applications web-frameworks double-submit-prevention
我想看看Web开发人员如何避免双重提交问题.基本上我对这个问题的理解如下:
当不耐烦的用户多次提交表单时会发生双重提交,从而导致问题.这个问题可以通过JavaScript(特别是jQuery脚本)来修复,这些脚本在提交表单后禁用了提交按钮 - 这样做的一个弱点就是客户端禁用了JavaScript.
还有服务器端检测方法.
所以我的问题是:
人们如何克服双重提交?什么是双重提交引起的问题的真实例子?任何Web应用程序框架都内置了双重提交工具吗?
如果您正在使用Java服务器端脚本并使用struts 2,那么您可以参考此链接,该链接讨论使用令牌.
http://www.xinotes.org/notes/note/369/
当请求与令牌第一次一起提交时,应该生成一个令牌并保存在初始页面呈现的会话中,在struts动作中运行一个线程名称作为令牌ID的线程,并运行逻辑,无论客户端具有什么请求,当客户端再次提交相同的请求时,检查线程是否仍在运行(thread.getcurrentthread().中断)如果仍在运行,则发送客户端重定向503.
请看struts 2code的ExecuteAndWaitInterceptor,这与逻辑结合使用令牌有助于快速点击
使用post-post-post或有时称为PRG(post/redirect/get)
简而言之,当用户发布表单时,您执行客户端重定向(在使用发布数据之后)到响应(成功)页面.
小智 5
一个真实的例子是这个答案发布两次;-).如果您不想依赖客户端的任何方面(javascript,甚至cookie),您可以计算提交数据的MD5哈希值,可能通过添加源IP和使用的浏览器等信息,并拒绝帖子具有相同的哈希值.
归档时间: |
|
查看次数: |
30050 次 |
最近记录: |