繁体   English   中英

使用password_hash PASSWORD_DEFAULT遗留问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM