我正在研究一些PHP,意图将其部署到用户的服务器上 - 可能是廉价/共享主机(意思是最低公分母PHP 5.2,不需要修改PHP安装)。密码哈希的Common advice似乎是bcrypt或scrypt,通过PHP 5.2的可安装扩展。共享主机的密码安全性(PHP 5.2+)
我一直在考虑使用一个迭代的SHA-512与一个强壮的每用户盐,但它听起来不像它真的比较bcrypt/scrypt。
没有修改基本PHP安装的能力,我对强密码安全性有哪些选择?
我正在研究一些PHP,意图将其部署到用户的服务器上 - 可能是廉价/共享主机(意思是最低公分母PHP 5.2,不需要修改PHP安装)。密码哈希的Common advice似乎是bcrypt或scrypt,通过PHP 5.2的可安装扩展。共享主机的密码安全性(PHP 5.2+)
我一直在考虑使用一个迭代的SHA-512与一个强壮的每用户盐,但它听起来不像它真的比较bcrypt/scrypt。
没有修改基本PHP安装的能力,我对强密码安全性有哪些选择?
正如对原始问题的评论所述,PHP < 5.2实施PBKDF2可在http://crackstation.net/hashing-security.htm获得。
PBKDF2可以说是比bcrypt/scrypt更好的选择,经过了更彻底的研究和测试。
我会说的第一件事就是不应该考虑PHP 5.2。它在两年前宣布寿终正寝,并且在那个时候还没有任何安全补丁,所以仍然使用它的任何主机无论如何都不重视安全。这些日子你应该考虑5.3作为最低版本。
没有上密码...
PHP(V5.5)的下一个版本将有一组内置提供标准化的密码散列函数。这个想法是一劳永逸地摆脱在PHP中使用错误密码练习的任何借口。一旦该版本发布,这将是唯一推荐的处理密码的方式。
与此同时,您可以下载兼容性库,实现当前PHP版本的相同功能。从这里下载:https://github.com/ircmaxell/password_compat
我的建议是使用这个库,附在一个if(function_exists())
包装。这样你就可以使用最佳实践,并且在5.5发布时也可以使用内置的funcs。
另请参阅:http://www.h-online.com/open/news/item/PHP-5-5-should-reduce-password-sloppiness-1707835.html仅供参考。
希望有所帮助。
这个库需要PHP> = 5.3.7。 – sanmai
请记住,安全性需要按比例缩放至应用程序。如果您正在编写一个微小的100个用户程序或者甚至是一个内部小型商业工具,那么编写企业级安全性可能不值得花时间。对于大多数用例来说,带盐的SHA-512在我看来是很安全的。但是,也要小心跨站点的废话! – thatidiotguy
同意以前的评论。人们倾向于过度这样做,特别是在这个领域。 phpBB2使用了多年的MD5 ...你认为有多少与散列有关的问题? – vanneto
我的用例可能不需要企业级的安全性。 :)但是,我认为这个问题的答案可能对某人有价值。 – cltatman