如何在 cookie 值中保护用户 ID

Dev*_*621 5 php mysql sql cookies

登录用户后,我将用户 ID 保存在 cookie ($_COOKIE['user_id']) 中,并在此 mysql 之后检查 cookie 中是否设置了 user_id 以及数据库中是否存在 user_id:

SELECT * FROM users WEHERE user_id = '$_COOKIE[user_id]'
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是每个客户端都可以更改 cookie 值,因此客户端可以将 cookie user_id 设置为 1 或 2,3,4 并且它将被登录,因此他们可以破解页面。

我想以某种方式散列或保护我的 cookie user_id 值。我希望你能理解我。你能给我任何建议吗?

col*_*ton 6

不要在 cookie 中这样做。在 cookie 中保存一个哈希值并将相应的用户 ID 存储在您的数据库中。您无法使 cookie 安全。

更清楚一点:

当用户登录时,在数据库中为他存储一个唯一的哈希值。这可能是类似的东西:sha512('9a7fd98asf'.time().$username)。这也是您保存在 cookie 中的值。您知道用户已登录,如果他在数据库中有这样的令牌并且它与 cookie 中的值匹配。这实际上是会话的处理方式。

  • 如果客户端没有用户信息,只有一个哈希值,那么当用户返回时,你如何知道该哈希值是针对哪个用户的? (2认同)