我对 PHP 并不陌生,但对于身份验证,我一直使用会话。现在我想做无状态身份验证,所以我不能使用会话,因为可能有很多服务器实例,它们不会共享会话数据,所以我认为我的数据库上有一个会话表,然后做以下:
- 在客户端机器中存储一个带有令牌的 cookie
- 在会话表中有一个令牌列,类似于 GUID,因此客户端可以访问具有相同令牌的所有条目
- 还要存储客户端的ip,所以相同token不同IP的人是无法读取数据的
像这样的东西
id | token | ip | key | data
1 | a-guid | 190.0.0.1 | username | encrypted-data
2 | a-guid | 190.0.0.1 | is_logged | more-encrypted-data
3 | other-guid | 190.2.2.2 | is_logged | some-more-data
因此,具有令牌 a-guid 和 ip 190.0.0.1 的 cookie 的用户可以访问用户名和 *is_logged*
但我不确定安全性,如果有人能以某种方式从您的 cookie 和您的 ip 中获取您的令牌,并且他/她可以使用您的 cookie 令牌和您的 ip 发送请求,它将完全访问您的帐户。
我应该有一些特殊的考虑吗?