2013-03-21 56 views
-1

来源是这里http://jaspan.com/improved_persistent_login_cookie_best_practice如何“保护”存储在cookie中的信息?

请咨询改进(方法的改变)。在这里我只想在cookie中存储用户名,以便用户不需要输入用户名。商店在黑客无法知道被盗的cookie的用户名(如果可能的话)

如果用户检查记住我,并成功登录

1)创建依赖于用户名的东西的方式。例如$ username_for_cookie = MD5($ username)。$ salt; +可能是别的。在mysql中记录$ username_for_cookie

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

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

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

Cookie的名字可能还随机值或类似_ekglasjd

用户回访网站

1)检查,如果cookie存在

2)如果cookie存在单独的$ username_for_cookie东西。 $ identifier。$ token得到3个分隔值

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

这样的方法是否“安全”?有什么需要改进的?

+0

不要在客户端上存储安全数据,请将其保存在服务器上。所有cookie真正需要的是坚持会话ID。可能不想在这一个上重新发明轮子。 – ficuscr 2013-03-21 16:16:11

+0

@ficuscr对于这种情况,这不是一个好的声明。 cookie将存储的所有内容都是一次性令牌,以启用持久登录。 – datasage 2013-03-21 16:17:43

+0

@datasage,是的,再次阅读你是正确的。我通常在做这样的事情时使用两个cookie,一个更长时间的“跟踪”cookie以及正常的“登录用户”会话cookie。 – ficuscr 2013-03-21 16:30:06

回答

0

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

  1. 只能使用https。
  2. 重置令牌使用后。
  3. 令牌必须在特定窗口内使用,然后才会过期并且用户需要重新登录。
  4. 确保令牌足够随机,无法复制。不应该用用户数据构建。