我想使用 Lithium 的“cookie”会话适配器。用户登录后,我将使用他的哈希密码创建一个 cookie。如果此 cookie 存在并且散列密码与数据库中的密码匹配,我将自动让他登录。
这安全吗?
好的,我说的不是 cookie 中的实际哈希,而是加密的哈希。我不希望任何人知道该散列的外观:) Lithium 具有“策略”,可以使用“秘密”加密您在会话中存储的任何数据,因此散列将被加密。基本上我在问锂的加密是否足够好。有人用过锂吗?
这取决于您的哈希算法。使用盐使您的哈希更安全:
安全密码哈希和
请记住,密码的哈希值实际上与他们的密码相同。窃取哈希值的人对用户帐户的访问权限与窃取密码的权限相同。因此,不建议将用户密码的哈希值存储在 cookie 中,除非有一些其他信息未与用于身份验证的 cookie 一起存储(即 2 因素身份验证)。加布在这个答案中。
还可以查看这些链接:
是否建议将散列密码存储在 cookie 中?
PHP 密码的安全哈希和盐
无论您如何存储密码(加密与否),如果有人获得它,则很有可能有人以另一个人的身份访问您的网站。
Lithium 的Encrypt
策略使用 bcrypt,实际上,它几乎是目前最好的东西(好吧,也许 scrypt 除外,但当 PHP 附带它时请告诉我,我会改变我的看法)。
无论如何,你的加密有多强并不重要,因为正如其他人所说,如果你正在传输密码的哈希值,那么你也可能在传输密码本身。我想不出你想要这样做的理由。
不,这绝对不安全。如果您将哈希密码存储在 cookie 中,则该哈希密码将与用户密码基本相同。如果其他人以某种方式获得该 cookie,他可以在自己的浏览器中设置该 cookie,并作为其他人进行身份验证。
只有当它是哈希密码和他的用户名或用户名的组合时。单独的密码可能存在多次,因此不是唯一的。用户名或 ID(通常)是唯一的。