[英]Using password_hash PASSWORD_DEFAULT legacy concerns
在php页面上: http : //php.net/manual/en/function.password-hash.php
PASSWORD_DEFAULT-使用bcrypt算法(自PHP 5.5.0起为默认值)。 请注意,此常数旨在随着时间的推移而变化,因为新的和更强大的算法已添加到PHP中。 因此,使用此标识符的结果的长度会随时间变化。 因此,建议将结果存储在可以扩展到超过60个字符的数据库列中(255个字符将是一个不错的选择)。
这是否意味着,如果我password_verify
用最新版本的如PHP8密码,它可能无法正确地破译存储的密码? 还是已经安全地嵌入了所有这些信息,而我所要做的就是将password_hash
的输出存储到我的数据库中,并且只需调用password_verify
进行验证就可以了吗?
这是否意味着,如果我
password_verify
用最新版本的如PHP8密码,它可能无法正确地破译存储的密码?
否。密码哈希包含有关实际使用哪种特定算法的信息。 如果将来的PHP版本支持多个密码哈希算法,则它将能够从旧哈希中读取该信息,以弄清楚如何重现该信息。
(具体来说,当前所有散列中存在的$2y$
前缀表示它们是使用PASSWORD_BCRYPT
算法生成的。以后的任何算法都将使用不同的前缀。)
是的, 只要您的数据库没有截断加密的密码 ,所有信息都将安全地嵌入。 我想这几乎是给定的。
该警告驱使您回家的原因是,为了您将来的理智,您将信息存储在长度灵活的字段中。 从历史上看,就像使用MD5一样,人们可能会选择CHAR(32)
。 但是使用bcrypt,您需要选择更灵活的方式。 可能是:
VARCHAR(255)
CHAR(60)
,此列为表中的最后一个,因此扩展其长度可能不需要RDBMS重新组合表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.