PHP 中的安全密码存储:为什么要跳过预哈希清理?
PHP 开发人员通常会考虑在将密码存储到数据库之前“清理”密码(使用 escape_string()
、htmlspecialchars()
或 addslashes()
等函数)。 然而,在处理散列密码时,这种做法既不必要又可能有害。
预哈希清洁的风险
预哈希密码清理增加了复杂性,但没有提高安全性。 由于散列密码不受 SQL 注入的影响,因此这些清理步骤不会提供任何安全优势。
哈希:密码安全的基石
密码哈希将密码转换为适合数据库存储的加密字符串。哈希函数同等对待所有输入字节,使预处理变得多余。
强大的密码保护
允许不受限制的密码创建(长度、字符类型)可确保哈希过程本身提供足够的安全性,无论密码内容如何。
消毒的负面影响
使用 password_verify()
验证密码时,修剪、HTML 编码或转义密码可能会导致不一致。 为了保持验证准确性,您需要一致地将这些相同的方法应用于用户输入,从而增加了不必要的复杂性。
总结
省略预哈希密码清理。 仅密码散列就可以有效保护存储的密码,消除预处理的需要和潜在的问题。
以上是为什么我不应该在哈希安全存储之前清理密码?的详细内容。更多信息请关注PHP中文网其他相关文章!