我应该如何在cookie中存储用户的LDAP密码?

时间:2009-11-15 10:32:59

标签: php encryption cookies passwords hash

所以我有这个黑盒认证方法,从账户人员传给我,基本上等于ldap_bind($connection, $username, $password)。但当然,我希望我的用户能够一次登录30天。

处理此问题的天真但不安全的方式是将用户名和密码存储在纯文本cookie中,然后在每次用户访问时使用我的黑匣子验证这些内容。

通常可以工作但不是因为我的黑盒的方式是将用户的密码存储在数据库中(或存储它的哈希值?),并将散列版本存储在cookie中,然后比较这些值。这在这里不起作用,因为我的黑匣子需要实际的密码,而不是哈希的密码。

我目前的想法是某种加密(与散列相反)。但由于这显然是一个常见的问题,我认为我最好首先询问周围是否有更好的解决方案,如果没有,你会建议加密/解密方法。

2 个答案:

答案 0 :(得分:8)

这不会真正回答您的问题,但您不应存储用户密码,甚至不应加密。

如果你真的必须这样做,并且用户明白你正在这样做。然后将密码存储在应用程序的数据库中(当然是加密的),然后向用户发送带有哈希值的cookie。当用户想要登录时,将哈希与您存储的内容进行比较,然后将未加密的密码发送到ldap。切勿将密码(甚至未加密)发送到用户的机器。

同样,这是一个非常糟糕的做法。如果ldap不允许你存储会话/密码,那么可能有充分的理由。

答案 1 :(得分:-1)

当用户登录时,给他们一个随机生成的“会话cookie”(不是严格意义上的会话cookie,因为它会比浏览会话更长)并存储以下元组:

user_id | cookie_id

然后将cookie_id连接到用户表的user_id,然后离开。