问题标签 [php-password-hash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2281 浏览

php - 什么密码强度被认为足以与 password_hash 函数一起使用?

据我了解,新的PHP 密码散列扩展(或一般 bcrypt)最重要的特性之一是算法的速度,它大大降低了蛮力攻击方法。

但它仍然以某种速度运行,对于字典攻击和暴力破解弱密码来说肯定足够了,[据说]短于六个字母数字字符。

所以我想知道,它确实很慢,特别是 - 使用哪种密码强度被认为是安全的。“尽可能强大”不是答案,因为密码强度始终是安全性和可用性之间的权衡 - 因此,我正在寻找可以被认为是安全的最小强度,甚至是一些面向未来的强度。

请注意,我是一个实践者 - 因此,基于具体数字的特定答案比具有不确定结论的冗长而冗长的理论推理更可取。

为了澄清一点,假设最坏的情况是:用户数据库被盗,有人会试图破译密码。多亏了强盐,彩虹桌不是一种选择。因此,剩下的唯一向量是字典攻击和蛮力。假设我们为用户提供预先生成的密码,消除字典攻击。这就是为什么密码强度是我唯一关心的原因。

更新:
似乎我没有很好地理解。对我来说,这个问题非常实用,而且可以回答。并且非常重要

在没有确定足够的密码强度的情况下,这种新算法的使用可能会受到质疑。如果密码仍然不安全,为什么还要使用好的算法呢?所以——我坚信——除了推荐使用新的散列算法外,还应该始终推荐最低密码强度。我想知道。

换句话说,如果某个部分存在特定的确定性 - 算法(“使用这个,而不是另一个!”) - 显然应该确定另一部分 - 密码强度,可以以相同级别的权限说出来。否则最弱的部分会破坏最强的部分。

0 投票
0 回答
785 浏览

php - 何时使用 password_needs_rehash

我对何时以及如何使用 password_needs_rehash 感到困惑。我将引导您完成我的思考过程。

我已使用 password_hash($password, PASSWORD_DEFAULT) 对用户密码进行哈希处理并将其存储到用户数据库中。然后我允许用户登录,在此过程中的某个时刻,我的控制器调用 password_verify($password, $hashedPassword),它会验证我的用户。我假设此函数根据散列密码中使用的算法对给定密码进行散列。

这是我真正的问题:如果默认算法发生变化,我什么时候调用 password_needs_rehash() 函数?在用户登录后,但在用户被重定向到仪表板之前,我应该从我的控制器中调用它吗?

0 投票
2 回答
435 浏览

php - 用于 password_hash() 错误的 PHP 5.3 补丁

从事我的第一个需要安全身份验证的项目。我的主机仍在 PHP 5.3.27 上,所以我正在使用此处找到的 password_hash() 兼容性补丁。我的问题是return password_hash($password, PASSWORD_BCRYPT, array('cost'=>$cost));错误指出 $password 必须是字符串。为什么不是字符串?我什至不知道从哪里开始调试。

获取密码的 HTML

register.php 的内容

validate.php 的内容 *password.php 是 password_hash()* 的 5.3 兼容性补丁

0 投票
3 回答
24013 浏览

php - PASSWORD_DEFAULT 与 PASSWORD_BCRYPT

PASSWORD_DEFAULT 和 PASSWORD_BCRYPT 有什么区别?他们都使用 Blowfish 加密算法吗?算法中的成本是多少?如何在 PHP 中设置 password_hash 产生 255 的哈希长度而不是 60?

0 投票
1 回答
118 浏览

php - 它是散列密码PHP的好/安全方式吗

我正在使用:

用于散列密码,但它与低于 5.3.7 的 PHP 版本不兼容。所以我创建了这个小功能来生成和验证密码但是由于我不是安全专家,我想知道它是非常安全还是仍然不安全。

我的功能:

0 投票
1 回答
9109 浏览

php - 在 PHP 5.4 中调用未定义函数 password_hash()

我正在尝试password_hash()在我的网站中使用该功能,但出现错误Call to undefined function password_hash().我在 GoDaddy 中检查了我的服务器详细信息,而我当前的 php 版本是 5.4。我怎样才能解决这个问题?

0 投票
2 回答
9795 浏览

php - 验证在 php 中生成的 nodejs 中的密码哈希

我的 php 代码生成一个哈希password_hash,我使用它存储在数据库中。下面是PHP代码:

我想根据 nodejs 中的这个哈希验证/检查密码。

我看到了很多节点模块(bcrypt、phpass、node-bcrypt),但它们都给了我错误。下面是在 php 中生成的示例哈希,我正在尝试在 nodejs 中进行验证。

(这里的秘密是真正的密码)

我目前的解决方法是通过节点调用 php 脚本来验证(对于任何需要解决方法的人)

这是一个hack,而不是这个问题的好答案。有没有办法在不使用这样的解决方法的情况下验证 nodejs 中的密码?

0 投票
1 回答
758 浏览

php - PHP < 5.5:password_hash 兼容加密散列

好的。我真的做了很大的研究,但我没有任何加密/散列知识。在我自己的机器上,我有 php 5.5,我正在使用 password_hash 函数。我刚刚意识到,我的在线主机最高支持 PHP 5.4。

我有一个特殊的加密类,这就是为什么(希望)没有太多改变要做的原因。这是我的简单代码:

正如您所看到的,这只是一个简单的覆盖,但第一次使用它。如何将 password_hash 和 password_verify 函数替换为 crypt 函数,以便将来与 passrowd_ 函数兼容?

例如。现在我将执行 crypt(),然后将结果存储在用户数据库中,并且将来当我将切换到 password_hash 和 password_verify 函数时,我希望这个加密密码能够工作,而不是强迫每个用户更改密码。

我希望在我的研究过程中我没有错过任何东西。我正在寻找简单、优雅、安全的解决方案:)。

谢谢你的帮助,br

更新:我读过这个(http://pl1.php.net/manual/en/function.password-hash.php):

password_hash() 使用强大的单向散列算法创建一个新的密码散列。password_hash() 与 crypt() 兼容。因此,由 crypt() 创建的密码哈希可以与 password_hash() 一起使用。

但是 crypt 有很多选择,我不太确定它们是否都兼容。

0 投票
1 回答
176 浏览

php - 为什么 PHP 的“password_hash”不返回字符串?

(密码已更改)

我在上面的 PHP 代码中遇到了一个小问题,每当它被执行时,我都会收到这个错误:

致命错误:无法通过[location]中的引用传递参数 2 [##:我缩短了上面的代码...这是有问题的密码字段]

环顾四周,在不使用变量的情况下直接传递字符串/整数时,这似乎是一个问题。但是,password_hash()返回一个字符串,所以我被引导相信它没有返回一个字符串。这个问题可能是什么问题?

0 投票
2 回答
8886 浏览

php - PHP密码验证总是返回false

我正在使用 PHP 的密码散列 API 在我正在构建的网站上散列和验证我的密码,但是每当我尝试验证我的密码时,它总是返回 false。

我有一个 User 类,它在将密码插入数据库之前设置密码:

如果用户名和电子邮件是唯一的,则插入新用户行 - 在检查我的数据库时,我的密码似乎是有效的 BCRYPT 字符串:

为了验证我的密码,我运行以下脚本:

$hash与上面引用的字符串有关,但是当我调用从我的输入字段中检索到的纯文本密码password_verify($password, $hash)在哪里时$password,我总是收到一个 false 值。