【发布时间】:2011-04-05 22:15:58
【问题描述】:
我对随机数有一个模糊的理解,但有点困惑。
nonce 验证失败时的正确响应是什么?
什么情况下nonce验证会失败?真正的用户有什么风险?
【问题讨论】:
标签: php security validation nonce
我对随机数有一个模糊的理解,但有点困惑。
nonce 验证失败时的正确响应是什么?
什么情况下nonce验证会失败?真正的用户有什么风险?
【问题讨论】:
标签: php security validation nonce
使用表单的 nonce 的目标通常有两个:确保数据只提交一次,并确保用户实际提交。第二点帮助防御跨站请求伪造:http://en.wikipedia.org/wiki/Cross-site_request_forgery
处理它们取决于上下文。如果用户正在填写表单并且 nonce 失败,请刷新页面(预填写数据),说一些良性的话,例如“糟糕,出现问题,请检查您的输入并再次提交”。有效用户可以点击提交,攻击将被阻止,或者用户至少知道发生了什么。
验证失败可能有几个原因。如果您启用了某种形式的浏览器缓存,用户访问一个表单(使用给定的 nonce),然后导航到另一个表单(使用它自己的 nonce)并通过后退按钮返回第一个表单,nonce 可能会失败.通过允许浏览器缓存发生,它们并没有刷新页面,并且您的服务器可能只在会话中为它们存储一个有效的随机数,因此它们不会匹配。一个有效的用例和一个失败的随机数(不是我会失眠的,只要确保重新填充表单)。
总的来说,我的建议是:告诉用户再次提交,巧妙地暗示他们应该检查他们的输入,让再次提交变得容易。
【讨论】: