使用Code Igniter存储密码最安全的方法是什么?

Ani*_*ket 12 codeigniter salt password-protection bcrypt password-hash

我正在为我当前的项目使用Code Igniter.

截至目前,我正在使用MD5进行密码散列,但我已经在很多地方阅读过,这样做并不是一个好习惯.

我该怎么办?

  1. 使用
  2. 或者我应该使用bcrypt

另外,如果建议使用bcrypt,那么如何将它与Code Igniter一起使用?

编辑

我把这些文件放进去了 application/libraries

  1. PasswordHash.php
  2. C/Makefile文件
  3. C/crypt_private.c

在我的控制器中,我使用此代码 -

$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的加载器,这就是你不需要includenew语句的原因.


jon*_*ohn 5

为何md5()何时使用它同样易于使用sha1()

同样腌制密码总是一个好主意,因为它有效地消除了彩虹表攻击的威胁

根据我的经验,对于99%的Web应用程序情况,salted SHA1哈希是非常安全的.

  • @jondavidjohn给出了如何轻松实现良好的安全性,绝对没有理由冒险入侵,因为作为开发人员,无论您的网站有多小,都无法打扰. (3认同)
  • CI具有加密功能,使用您在配置中设置的加密密钥,将其绑定到您的特定应用程序.所以,只需使用`$ this-> ci-> hash($ password);`如果服务器上有sha1,它将使用sha1.CI文档:http://codeigniter.com/user_guide/libraries/encryption.html (2认同)