大多数开发人员都知道密码不能以明文形式存储,但许多开发人员认为使用 md5
或 sha1
哈希密码仍然是安全的。曾经有一段时间,使用上述哈希算法已经足够了,但现代硬件使得使用暴力攻击破解这种哈希以及更强的哈希变得非常快。
为了提高用户密码的安全性,即使在最坏的情况下(您的应用程序遭到入侵),您也需要使用一种能够抵御暴力攻击的哈希算法。目前最好的选择是 bcrypt
。在 PHP 中,您可以使用 crypt 函数 创建 bcrypt
哈希。Yii 提供两个帮助函数,使使用 crypt
安全地生成和验证哈希变得更容易。
当用户第一次提供密码(例如,在注册时),密码需要被哈希
$hash = Yii::$app->getSecurity()->generatePasswordHash($password);
然后可以将哈希与相应的模型属性关联,以便它可以存储在数据库中以备后用。
当用户尝试登录时,提交的密码必须与之前哈希并存储的密码进行验证
if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
// all good, logging user in
} else {
// wrong password
}
发现了一个错别字,或者您认为此页面需要改进?
在 github 上编辑它 !
注册 或 登录 发表评论。