Ani*_*ket 12 codeigniter salt password-protection bcrypt password-hash
我正在为我当前的项目使用Code Igniter.
截至目前,我正在使用MD5进行密码散列,但我已经在很多地方阅读过,这样做并不是一个好习惯.
我该怎么办?
另外,如果建议使用bcrypt,那么如何将它与Code Igniter一起使用?
我把这些文件放进去了 application/libraries
在我的控制器中,我使用此代码 -
$params = array(
'phpass_hash_strength' => 8,
'phpass_hash_portable' => FALSE
);
$this->load->library('PasswordHash', $params);
$password = $this->passwordhash->HashPassword($pwd);
Run Code Online (Sandbox Code Playgroud)
我收到这些错误 -
A PHP Error was encountered
Severity: Notice
Message: Uninitialized string offset: 3
Filename: libraries/PasswordHash.php
Line Number: 116
Run Code Online (Sandbox Code Playgroud)
A PHP Error was encountered
Severity: Warning
Message: strpos() [function.strpos]: Empty delimiter
Filename: libraries/PasswordHash.php
Line Number: 116
Run Code Online (Sandbox Code Playgroud)
现在PasswordHash.php使用SimpleLoginSecure删除了.
End*_*age 16
使用bcrypt.这个讨论想出了这里的评论我的回答.您可以使用诸如phppass之类的库来真正简化密码加密.
关于盐的问题.用它!否则,有人可以直接访问此站点并下载彩虹表,这些表将覆盖普通用户选择的大多数密码.特别是在过去几个月的所有安全漏洞中,现在不是说你不会使用像随机盐一样简单实现的东西的时候了.
UPDATE
要将PHPPass与CI一起使用,请从上面链接的phppass网站下载并解压缩文件.将PasswordHash.php文件放入CI应用程序/库目录中.
在您的代码中,然后通过以下方式加载库: $this->load->library('PasswordHash',array(8, FALSE));
哈希密码就这么简单 $this->PasswordHash->HashPassword($password);
要稍后检查密码是否正确,它就像下面这样简单:
$password = $_POST['password'];
$actualPassword = /*Get the hashed password from your db*/;
$check = $this->PasswordHash->CheckPassword($password, $actualPassword);
Run Code Online (Sandbox Code Playgroud)
我从http://dev.myunv.com/articles/secure-passwords-with-phpass/上获取了这个演示,它为您提供了更多信息.我稍微修改了这个教程以利用CI的加载器,这就是你不需要include或new语句的原因.
为何md5()何时使用它同样易于使用sha1()?
同样腌制密码总是一个好主意,因为它有效地消除了彩虹表攻击的威胁
根据我的经验,对于99%的Web应用程序情况,salted SHA1哈希是非常安全的.