php,有没有一种安全的方法来存储密码?

时间:2010-10-13 22:40:43

标签: php cookies passwords

有没有一种安全的方法在php中将密码存储在cookie中?

还是不推荐?

感谢

6 个答案:

答案 0 :(得分:1)

用户可以随意更改Cookie。如果要在PHP中“信任”数据,则需要将其存储在服务器上,而不是存储在用户的计算机上。 Cookie也可以通过XSS攻击和浏览器漏洞拦截(实用但依赖于另一个安全漏洞),除了在线上嗅探它(理论上更多,但在这个方案中总是一个缺陷)。

答案 1 :(得分:1)

不建议这样做......

......即使加密了。在客户端计算机上存储此信息使他们有机会比较cookie,希望解密。更糟糕的是,他们可以从其他人那里嗅到一个cookie然后伪装成该用户!

建议用户通过安全连接登录并发送会话cookie作为响应。会话cookie包含一个会话ID,PHP将自动映射到服务器上的会话文件。然后,您可以在会话中存储用户标识。在短时间后,会话应该过期。

会话由PHP自动管理,你应该利用它。

Here's a tutorial关于如何使用PHP会话。

答案 2 :(得分:0)

一般不推荐,但可能。您可以使用mcrypt扩展程序加密Cookie的内容。

[编辑2018年8月]此扩展程序不再可用。

答案 3 :(得分:0)

不推荐。理想情况下,cookie只是一个唯一标识符,服务器可以将其用作维护所需数据的数据库表(或其他结构)的索引。

可以对cookie中的数据进行编码,但我不会对任何敏感的数据进行编码。

说到密码,我自己的意见是它们根本不应该存储。只应存储密码哈希。

答案 4 :(得分:0)

有人可能会将密码哈希到cookie中,并根据数据库中的哈希检查该哈希值。这在理论上是安全的。 (你是哈希,不是吗?有盐吗?如果有人闯入你的数据库但你没有,那么你的所有用户都注定失败了。)

无论如何,它仍然不推荐。将信息(即使在散列时)放到公开状态是一个坏主意,当一个相对简单的事情是自己存储数据并将其与通用会话ID绑定时,该ID不向任何人提供有关实际密码的任何信息。可能会偷走那个饼干。 $_SESSION让这非常容易。

答案 5 :(得分:0)

你可以使用sha1()或md5()散列cookie的数据,但最好的方法是使用session来存储用户的数据。