codeigniter - 使用 Codeigniter 存储密码的最安全方法是什么?

标签 codeigniter password-protection salt bcrypt password-hash

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

截至目前,我正在使用 MD5 对于密码散列,但我在很多地方都读到过,这样做不是一个好习惯。

我应该带什么?

  • 使用
  • 或者我应该使用 bcrypt

  • 另外,如果 bcrypt 是推荐的,那么如何与 Code Igniter 一起使用呢?

    编辑

    我已将这些文件放在 application/libraries
  • PasswordHash.php
  • c/Makefile
  • c/crypt_private.c

  • 在我的 Controller 中,我正在使用此代码 -
    $params = array(
           'phpass_hash_strength' => 8,
               'phpass_hash_portable' => FALSE
           );
    $this->load->library('PasswordHash', $params);
    $password = $this->passwordhash->HashPassword($pwd);
    

    我收到这些错误 -
    A PHP Error was encountered
    
    Severity: Notice
    
    Message: Uninitialized string offset: 3
    
    Filename: libraries/PasswordHash.php
    
    Line Number: 116
    
    A PHP Error was encountered
    
    Severity: Warning
    
    Message: strpos() [function.strpos]: Empty delimiter
    
    Filename: libraries/PasswordHash.php
    
    Line Number: 116
    

    更新

    已删除 PasswordHash.php , 使用 SimpleLoginSecure 现在。

    最佳答案

    使用 bcrypt。这个讨论出现了here在对我的回答的评论中。您可以使用诸如 phppass 之类的库。真正简化密码加密。

    关于盐的问题。使用它!否则有人可以简单地去this site并下载包含普通用户选择的绝大多数密码的彩虹表。特别是在过去几个月发生的所有安全漏洞的情况下,现在不是说你不会使用像随机盐这样简单的东西来实现的时候。

    更新

    要在 CI 中使用 PHPPass,请从上面链接的 phppass 网站下载并提取文件。将 PasswordHash.php 文件放入 CI application/libraries 目录。

    在您的代码中,您然后通过以下方式加载库:$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);
    

    我从 http://dev.myunv.com/articles/secure-passwords-with-phpass/ 中获取了这个演示这为您提供了更多信息。我稍微修改了该教程以使用 CI 的加载程序,这就是为什么您不需要 includenew声明。

    关于codeigniter - 使用 Codeigniter 存储密码的最安全方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7044785/

    相关文章:

    java - 如何在 Java 中生成 SALT 值?

    php - MYSQL动态交叉表问题

    ios - 使用 PDFKit iOS 为现有 pdf 文件添加密码保护

    cryptography - bcrypt 用 hmac'd 密码改进了吗?

    encryption - 哈希盐除了防止彩虹表攻击之外还有其他用途吗?

    Node.JS Crypto.HMac 生成密码

    eclipse - 如何在eclipse中包含codeigniter框架

    javascript - Codeigniter - 在 1 个 View 中显示来自 2 个不同模型函数的 2 个不同数据

    PHP 匹配 2 选定的表

    php - 子目录 'overriding' 父 htaccess 中的 .htaccess