Woo*_*Bob 20 asp.net-mvc postback submit action-filter
常见的Web问题是用户多次单击表单的提交按钮,因此服务器不止一次地处理表单.当用户点击已提交表单的后退按钮并因此再次处理时,也会发生这种情况.
什么是阻止ASP.NET MVC发生这种情况的最佳方法?
我认为的可能性是:
还有更多吗?
是否有任何特定的实现?
我可以看到第三个选项被实现为具有HtmlHelper扩展的ActionFilter,其方式与防伪内容类似.
期待收到MVC'ers的消息.
ale*_*emb 16
通常人们会忽略最常用的处理方法,即使用随机数键.
您可以像其他人提到的那样使用PRG,但PRG的缺点是它无法解决双击问题,它需要额外的服务器进行重定向,因为最后一步是GET请求你不要t可以直接访问刚刚发布的数据(尽管它可以作为查询参数传递或在服务器端维护).
我喜欢Javascript解决方案,因为它大部分时间都可以使用.
然而,Nonce键一直在工作.随机数密钥是由服务器生成的随机唯一GUID(也保存在数据库中)并嵌入在表单中.当用户POST表单时,nonce键也会被发布.一旦POST进入服务器,服务器就会验证其数据库中是否存在nonce密钥.如果是,则服务器从数据库中删除密钥并处理该表单.因此,如果用户POST两次,则不会处理第二个POST,因为在处理第一个POST后删除了nonce密钥.
nonce密钥具有额外的优势,它通过防止重放攻击带来额外的安全性(中间的人嗅探您的HTTP请求,然后将其重放到将其视为合法的服务器).
您应该始终将重定向作为HTTP响应返回到POST.当用户使用浏览器中的前进/后退按钮来回导航时,这将阻止POST再次发生.
如果您担心用户双击提交按钮,只需要一个小脚本在提交时立即禁用它们.
| 归档时间: |
|
| 查看次数: |
7439 次 |
| 最近记录: |