我们正在使用 PHP 将密码保存在数据库中:
return hash('sha256', PASSWORD_SALT . $password);
最近(幸运的是)一位优秀的黑客向我们注入了 SQL,并破解了一些密码,包括管理员密码。
这个故事并没有像好莱坞电影中那样戏剧性或可怕地结束,因为他很友善地指出了漏洞。(我们相应地“感谢”了他。)
现在漏洞已经被修补,我们担心其他地方可能会有一些漏洞,因为代码库很大。问题是:
- 他到底是如何这么快(几小时到一天)破解密码的?PASSWORD_SALT 很长,存储在源代码中,他没有。此外,PHP 代码中不接受空白密码。
- 我们假设我们应该更改现有和未来密码的哈希/加密。您推荐哪种加密方式以使暴露的密码更安全?
他告诉我们,他在他的公司使用了一些软件和十几台台式机。他说他是某大公司的无聊安全专家,所以他有办法做事。