尽管业界做出了努力,但Web应用程序从企业泄漏数据的频率却越来越高。这些泄漏的具体含义是它们经常暴露客户密码信息,不仅可能损害泄漏发生的站点,而且还可能损害许多其他帐户,从而可能损害客户的帐户,因为客户倾向于在许多不同的站点重用同一密码。
考虑到这一点,保护这些客户信息是每个商人和开发商的责任。
Magento通过使用单向哈希存储密码的行业标准模式来解决客户密码的安全性。该机制没有提供直接从其哈希中检索密码的方法,这是唯一的可靠方法“unhash”哈希是通过蛮力(尝试每个可能的值)。暴力破解是令人望而却步的昂贵和费时的事情,它确保了哈希密码的安全性。
Magento密码哈希的有效性在很大程度上取决于哈希算法的选择。当前,社区版1.9.1.0使用MD5,而企业版1.14.1.0使用SHA256。
尽管这些哈希算法在行业中被广泛使用,但是它们遭受了核心设计缺陷,这使得它们 不适合保护信息.
根据 PHP密码哈希建议:
诸如MD5,SHA1和SHA256之类的哈希算法被设计为非常快速和高效。借助现代技术和计算机设备,它已变得微不足道。“brute force”这些算法的输出,以便确定原始输入。
由于现代计算机可以多快“reverse”这些哈希算法,许多安全专业人员强烈建议不要将其用于密码哈希。
考虑到需要安全存储密码的应用程序数量,PHP提供了 本机密码哈希和验证API。该API使开发人员可以轻松存储和验证密码,而不必研究,重新实现和维护真正安全所需的各种最佳实践细节。
此外,该本地API旨在随着时间的推移而发展–随着发现更好的哈希算法或其他最佳实践,它可以透明地改善其实现,而无需开发人员更新代码。
与其他最佳实践(例如恒定时间字符串比较,唯一的盐等)一起,PHP本机密码API使用当前建议的 加密 哈希算法。它被设计为随时间变化,因此由本机API生成的哈希字符串包括所有必需的信息以验证哈希。
PHP本机密码API哈希字符串示例,来自 PHP密码哈希常见问题解答.
因此,由本机API创建的哈希字符串始终与验证API的未来版本向前兼容。
从5.5.0版开始,PHP核心中提供了PHP本机密码哈希API。此外,还有一个 纯PHP兼容性库 适用于自5.3.7开始的PHP版本。由于一个 安全问题 在PHP 5.3.6及更低版本中,商人和开发人员应至少升级到5.3.7。
为了提高其密码哈希安全性,我创建了一个 PHP本机密码哈希API Magento模块。该模块与Commerce Edition和Open Source Edition都兼容,并且包含本机API兼容性库,使其与PHP 5.3.7及更高版本兼容。
此模块添加了三个系统配置选项,可以在“系统”中找到-> Configuration -> Customers ->客户配置-> Password Options.
该模块已获得自由许可,可在GitHub上免费使用: //github.com/ericthehacker/magento-phpnativepasswords.
可以使用modman轻松安装它,如 安装说明。如上所述,在安装后在系统配置中启用模块的功能至关重要。
一如既往地欢迎您提出问题或贡献!