php - 如何在 cookie 值中保护用户 ID

标签 php mysql sql cookies

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

SELECT * FROM users WEHERE user_id = '$_COOKIE[user_id]'

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

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

最佳答案

不要在 cookie 中这样做。在 cookie 中保存一个散列,并将相应的用户 ID 存储在您的数据库中。您不能使 cookie 安全。

更清楚一点:

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

关于php - 如何在 cookie 值中保护用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24258446/

相关文章:

sql - sql语句中的[]括号

SQL 按问题分组

javascript - 用于设置 SESSION 值的切换按钮

php - 在适用于 Linux 的 XAMPP 中升级 PHP?

php - 如何将此 cURL 终端请求转换为 PHP 终端请求?

mysql - 内连接3表,检索if条件

PHP 调用另一个 PHP 页面进行 MySQL 查询(返回 JSON 数据)

mysql - 从查询结果填充sql列

mysql - 超过 MySQL 的 TIME 值限制 838 :59:59

php - 使用组合值更新重复键?