php - 关于低敏感度用户帐户的双盐认证的意见?

标签 php codeigniter authentication ion-auth

我目前正在从事一个需要用户帐户的网络项目。该应用程序在服务器端是 CodeIgniter,因此我使用 Ion Auth 作为身份验证库。

我以前写过一个身份验证系统,我用了两种盐来保护密码。一个是服务器范围的盐,作为 .htaccess 文件中的环境变量,另一个是在用户注册时创建的随机生成的盐。

这是我在该身份验证系统中用于散列密码的方法:

    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    //create a random string to be used as the random salt for the password hash
    $size = strlen($chars);
    for($i = 0; $i < 22; $i++) {
        $str .= $chars[rand(0, $size - 1)];
    }

    //create the random salt to be used for the crypt
    $r_blowfish_salt = "$2a$12$" . $str . "$";

    //grab the website salt
    $salt = getenv('WEBSITE_SALT');

    //combine the website salt, and the password
    $password_to_hash = $pwd . $salt;

    //crypt the password string using blowfish
    $password = crypt($password_to_hash, $r_blowfish_salt);

我不知道这是否有漏洞,但无论如何,我转向 Ion Auth 以获得更完整的功能集以与 CI 一起使用。

我注意到 Ion 仅使用单一盐作为其哈希机制的一部分(尽管建议设置 encryption_key 以保护数据库 session 。)

将存储在我的数据库中的信息包括姓名、电子邮件地址、国家/地区位置、一些注释(建议它们不包含敏感信息)以及指向 Facebook、Twitter 或 Flickr 的链接帐户。基于此,我不认为我有必要在我网站的安全页面上建立 SSL 连接。

我的问题是,为什么只使用一种盐作为 Ion Auth 库的一部分是否有特殊原因?这是否暗示我在它提供的功能之前编写了自己的额外加盐,或者我是否遗漏了什么?

此外,是否值得使用 2 个盐,或者一旦攻击者获得了随机盐和散列密码,所有的赌注都会被取消吗? (我假设不是,但值得检查一下我是否担心什么......)

最佳答案

这是因为 Ion_Auth 使用 bcrypt - 所以您通常不需要做更多的事情。

此外 - 您可以配置“random_rounds”,这有点像配置中的随机加盐(在一定程度上)。

编辑:你可以view this SO thread有关 bcrypt 和其他类型加密的更多详细信息

关于php - 关于低敏感度用户帐户的双盐认证的意见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12674756/

相关文章:

php - Linux服务器端php脚本用于从一种比特率转换32kbps、48kbps等音频?

php - 计数行除以计数行

php - Codeigniter 版本冲突中的 SQL 查询

java - 在 spring 运行时重新加载 users.properties

rest - Keycloak-Oauth-2身份验证流程

c++ - Linux中getlogin函数的使用

php - 维持多对多关系的最佳方式是什么?

php - 关于 curl 的小问题?

php - array_unique 然后重新编号键

php - 如何在 Codeigniter 中更新具有多个条件的多行