【发布时间】:2017-08-26 08:44:08
【问题描述】:
我正在编写一个登录脚本,并试图让它比过去更安全。在我过去只存储uniqid() 的哈希并将其存储为用户登录时的会话之前。现在我正在使用以下函数来创建 UID,但认为它可能有点矫枉过正。它返回一个 64 个字符的字符串。
private function _createUid() {
$bytes = random_bytes(32);
$uid = bin2hex($bytes);
return $uid;
}
现在我的问题是,存储登录唯一 ID/令牌的标准方法是什么?我不是指记住我,因为这是一个完全不同的故事,而只是一个典型的登录以及我应该存储为 UID 的内容。
任何帮助都会很棒,谢谢!
【问题讨论】:
-
我认为 JWT 令牌是存储会话的绝佳方式,因为它不需要数据库访问来验证并且可以随时过期。您还没有真正说明您要达到的目标。这些 ID 是发送到服务器以验证客户端还是?
-
它不一定是字符串长度应该引起担忧。将唯一性与验证相结合是一个很好的方法。您应该根据存储在服务器端的内容检查会话值。例如。每个请求的数据库条目。正如 Luke 所指出的,JWT 是一种很好的身份验证方法。即使使用 JWT,您也可以在每个请求上验证附加到 json 令牌的值。
-
你不需要这个,因为你已经有了它 - 会话 ID。
标签: php encryption login token access-token