han*_*ngu 5 java security spring-mvc post-redirect-get web
我需要阻止为客户的网站提交重复的表单.
(PRG模式:http://en.wikipedia.org/wiki/Post/Redirect/Get)

我最初尝试使用PRG模式.
在这种情况下,我认为我需要跨多个Web服务器处理会话(或spring flashmap).

我的一位同事提出了这种方法.

另一位同事提出了这种方法.
我认为方法2,3不是一个好的选择.
但我不知道这些方法的具体缺点或安全风险.
我试图谷歌,但我没有找到答案.
先感谢您.
我想更新优缺点.
session,database或什么的.session并拥有多个服务器,则必须执行某些操作以使会话可在多个服务器上使用.方法 1 是一种非常简单的方法,可以解决一些重复的帖子问题。它无法应对服务器延迟,而服务器延迟是重复提交的原因。
\n\n方法2是完全错误的。如果您限制浏览器标准功能(例如刷新),用户会感到不安。也就是说,如果您甚至能够在技术上跨浏览器这样做。您需要考虑 F5、Ctrl+F5、\xe2\x8c\x98 + F5 等各种刷新图标。
\n\n我必须承认,我并不完全理解方法 3 的意图,但是,将用户弹回空白页面感觉有点不对。
\n\n另一种标准方法是使用带有表单帖子的通知。这还将帮助您避免称为跨站点请求伪造的安全风险。这很简单。
\n\n如果您收到另一个带有不存在的随机数的请求,那么您就知道它要么是重复的帖子,要么是一些更邪恶的 CSRF 攻击。
\n\n您也许可以找到一些支持库来为您完成此操作。
\n