我一直在阅读有关使用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可以在那天无限制地使用。我认为这有风险,也许最好将nonce存储在HD文件上,破坏Stateless,但确保nonce只使用一次。我可以用一个简单的rand()来创建它。
答案 0 :(得分:2)
我终于理解了Wordpress _auth_cookie()
,我错过了旧的PHP extract()
和explode()
。它的cookie值保持$cookie = $user->user_login . '|' . $expiration . '|' . $hash;
,$ hash包含很多信息,如登录,密码和到期时间。
正如我想要使用“login | nonce”,但它会增加它的到期时间。