-1

来源在这里http://jaspan.com/improved_persistent_login_cookie_best_practice

请提出改进​​意见(方法的更改)。在这里,我只想在 cookie 中存储用户名,这样用户就不需要输入用户名。以黑客无法从被盗 cookie 中知道用户名的方式存储(如果可能的话)

如果用户选中记住我并成功登录

1)根据用户名创建一些东西。例如 $username_for_cookie = MD5($username).$salt;+可能是别的东西。在mysql中记录$username_for_cookie

2) 创建标识符。简单的随机值。在mysql中记录标识符

3) 创建令牌。也是简单的随机值,也记录在mysql中。

4) 创建 cookie 将所有上述值放在一起 $username_for_cookie 。$标识符 .$token

Cookie 名称也可能是随机值或类似 _eglasjd

用户重访网站

1)检查cookie是否存在

2) 如果 cookie 存在单独的 $username_for_cookie 。$identifier .$token 获取 3 个分隔值

3) 如果 $username_for_cookie 值存在,则在 mysql 中搜索。如果不存在,登录表单输入用户名和密码。如果存在比较 $identifier 和 $token 是否与 mysql 中的相同

这种方法“安全”吗?有什么需要改进的?

4

1 回答 1

0

您可以通过执行以下操作来改善这一点。

  1. 仅使用 https。
  2. 使用后重置令牌。
  3. 令牌必须在某个窗口内使用才能过期,并且用户需要重新登录。
  4. 确保令牌足够随机以至于无法复制。不应使用用户数据构建。
于 2013-03-21T16:19:45.593 回答