由于PHP 5.5.0现已推出,
-
哪个更适合使用(安全性、便携性、经得起未来考验)?
-
它说password_hash()password_DEFAULT在每个完整版本(+1.0或+0.1)中可能会更改,那么我们如何使用以前的DEFAULT方法哈希密码和新的默认值呢?这是否意味着在用户更改密码之前,数据库中已经散列密码的PHP 5.5脚本将无法在PHP 5.6上运行?COST更改(我想知道服务器是否可以更新到phpv5.6,或者网站管理员可能会更改托管提供商(然后更改较弱/较强服务器的COST),对当前用户没有任何问题)
-
我们应该等待一些更新吗?或者它们在5.5.0 中使用是否已经安全
-
我们应该仍然使用PHPass等框架,还是这些新的PHP 5.5函数就足够了和/或更经得起未来考验?
-
密码散列函数(如
password_hash
)是首选的,因为它们自动化了更多的过程,如挑选盐、验证密码和重新散列。 -
password_verify
函数将自动检测用于生成哈希的算法,因此不存在兼容性问题。 -
这些函数在PHP的发布版本中,所以使用起来应该很好。
-
如果您的代码需要在5.5之前的PHP版本上运行,请使用PHPass或password_compat等填充程序。否则,请使用密码哈希函数。
新函数password_hash()
只是函数crypt()
的包装器,简化了它的使用。crypt函数返回以下形式的散列:
algorithm (BCrypt)
| cost factor (10)
| | salt hash-value
| | | |
-- -- -----------------------------------------------------
$2y$10$nOUIs5kJ7naTuTFkBy1veuK0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa
这意味着包括算法和所有参数,这些参数是将输入的密码与存储的哈希值进行比较所必需的。即使默认算法会更改,函数password_verify()
也能够识别所使用的算法,并可以使用旧算法来验证密码。
因此,这个新的密码API无疑是最未来的密码哈希方式。您甚至可以将它与带有兼容包的旧PHP版本一起使用。