很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center .
9年前关闭。
我一直在阅读有关使用 cookie 进行身份验证的信息。这似乎具有挑战性,因为 cookie 可能会从浏览器缓存中被窃取或在 HTTP 消息中被截获。
我想到了为此使用 nonce 的想法。我喜欢它,因为有人偷了它,一旦真正的用户再次尝试访问 WebApp,他就会失去访问权限。为了继续窃取它,他必须离用户有点近。
但我无法找到合适的算法。 Wordpress nonce 实现使用 user_id,它的身份验证 cookie 生成器有点复杂(我会继续阅读它,但我想要更简单的实现)。
这些是我被迫使用的约束:
time() / ( $nonce_life / 2 )
作为 nonce 的参数之一,因此只能在 这个想法是有一种无状态的、仅 cookie 的方式来了解谁已登录。$nonce_life 可以是 1 天,因此用户在第一天访问期间登录并保持登录状态直到一天结束。
正如我在 Wordpress 中看到的那样,实际上并没有办法知道 nonce 只使用一次,它所做的所有验证都是它是否在其生命周期内被使用。因此,如果 $nonce_life 是 1 天,则可以在该天无限使用 Wordpress 随机数。我认为这是有风险的,也许最好将 nonce 存储在 HD 文件上,打破无状态,但确保 nonce 只使用一次。我可以使用一个简单的 rand() 来创建它。
最佳答案
我终于懂了 Wordpress _auth_cookie()
,我错过了旧的 PHP extract()
和 explode()
.它的 cookie 值为 $cookie = $user->user_login . '|' . $expiration . '|' . $hash;
$hash 包含很多信息,例如登录名、密码和过期时间。
正如我想用“login|nonce”做的,但它增加了过期时间。
关于java - 使用 nonce 进行无状态 cookie 身份验证的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041552/