【问题标题】:What is the best way to deal with a failed nonce validation?处理失败的随机数验证的最佳方法是什么?
【发布时间】:2011-04-05 22:15:58
【问题描述】:

我对随机数有一个模糊的理解,但有点困惑。

nonce 验证失败时的正确响应是什么?

什么情况下nonce验证会失败?真正的用户有什么风险?

【问题讨论】:

    标签: php security validation nonce


    【解决方案1】:

    使用表单的 nonce 的目标通常有两个:确保数据只提交一次,并确保用户实际提交。第二点帮助防御跨站请求伪造:http://en.wikipedia.org/wiki/Cross-site_request_forgery

    处理它们取决于上下文。如果用户正在填写表单并且 nonce 失败,请刷新页面(预填写数据),说一些良性的话,例如“糟糕,出现问题,请检查您的输入并再次提交”。有效用户可以点击提交,攻击将被阻止,或者用户至少知道发生了什么。

    验证失败可能有几个原因。如果您启用了某种形式的浏览器缓存,用户访问一个表单(使用给定的 nonce),然后导航到另一个表单(使用它自己的 nonce)并通过后退按钮返回第一个表单,nonce 可能会失败.通过允许浏览器缓存发生,它们并没有刷新页面,并且您的服务器可能只在会话中为它们存储一个有效的随机数,因此它们不会匹配。一个有效的用例和一个失败的随机数(不是我会失眠的,只要确保重新填充表单)。

    总的来说,我的建议是:告诉用户再次提交,巧妙地暗示他们应该检查他们的输入,让再次提交变得容易。

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 2010-09-06
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多