有没有一种安全的方法在php中将密码存储在cookie中?
还是不推荐?
感谢
答案 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来存储用户的数据。