2026年的密码安全:泄露、检查和账户保护
大多数账户被黑并不是高明的攻击——它们是来自其他人泄露的旧密码,恰好有效。这里是密码安全没有偏执:密码是如何泄露的,什么使密码强大,如何安全地检查您的密码,以及如何在服务器上存储密码,以便泄露不会造成灾难。
为什么密码仍然是薄弱环节
您可以按照规范锁定服务器,设置 网站安全,但仍然可能因一个弱密码而失去账户。原因很简单:人们重复使用密码。相同的密码保护着电子邮件、商店和论坛——当论坛被泄露时,该密码就会打开电子邮件,而电子邮件又可以打开其他所有内容。
这种攻击被称为凭证填充:有人从旧的泄露中获取数百万个登录-密码对,并在其他网站上自动重放。攻击者不需要黑入您的账户——这已经为他们完成了。因此,密码的强度并不是指记忆的难易;它归结为两个规则:密码必须是 长 和 独特的 每个网站。
密码是如何泄露的
密码很少被“猜测”。更常见的是它在整个数据库中泄露:
- 服务泄露 — 用户数据库和密码最终在线上。如果密码存储不当,它们会很快被破解。
- 网络钓鱼 — 你在一个与真实页面无法区分的假页面上自己输入密码。
- 恶意软件 — 窃取者直接从感染的设备上获取浏览器保存的密码。
- 重用 — 一个网站的泄露会自动危及所有使用相同密码的其他网站。
结果总是一样的:密码会出现在已经拥有数亿条记录的公共数据库中。好消息是 — 你可以安全地检查这些数据库,看看你的密码是否已经泄露。
什么使密码强大
强度不是通过拥有 '特殊字符' 来衡量的,而是通过熵来衡量 — 攻击者需要尝试的选项数量。长度比奇特符号更能提高强度:四个随机单词胜过一个短的 'P@ss1!'。
- 长度 — 至少 12–16 个字符,重要账户需要更多。
- 随机性 — 不是名字、日期或字典中的单词,而是真正的随机。
- 独特性 — 每个网站一个不同的密码,这样一次泄露不会影响其他网站。
在脑海中想出这个是没有意义的。请生成它:我们的 密码生成器 在浏览器中生成一个长的随机密码,具有密码学强度,而不将其发送到任何地方。
如何检查密码是否泄露
您可以检查一个密码是否在已知泄露中,而无需透露它。它的工作原理是 k-匿名性:密码在您的浏览器中被哈希处理,只有哈希的前五个字符发送到服务器,返回该前缀的匹配列表,然后在本地找到匹配。服务器从未看到密码或其完整哈希。
这正是我们的 密码泄露检查 的工作原理:它将密码与 Have I Been Pwned 数据库进行比较,不存储任何内容。如果密码出现在泄露中,请将其视为已泄露,并在您使用它的所有地方更改。将相同的检查集成到您的注册和密码更改表单中,以在用户设置弱密码之前警告他们。
密码管理器和双因素认证
长且独特的密码无法记住——而且不需要记住。密码管理器为您生成、存储并填写密码;您只需记住一个主密码。这是每个网站上拥有不同强密码的唯一实用方法。
第二层是 双因素认证 (2FA)。即使密码泄露,第二个因素也会阻止登录。按强度排序:硬件密钥或身份验证器应用程序优于 SMS 代码,因为 SMS 代码可以通过 SIM 交换被拦截。至少为电子邮件和银行账户启用 2FA——这些账户可以恢复所有其他账户。
如何在后端存储密码(针对开发者)
如果您构建一个具有注册功能的服务,用户密码的责任在于您。基本规则不可争辩:
- 绝不要以明文存储密码并且绝不要可逆加密它们——只使用不可逆哈希。
- 使用慢速自适应函数—— bcrypt、scrypt 或 argon2——并为每个密码使用盐。普通的 SHA-256 不行:它太快,容易被 GPU 破解。
- 在注册和更改时检查新密码是否泄露——通过相同的 k-匿名性,而不发送密码。
- 限制登录尝试次数并添加 2FA,这样数据库泄露就不会导致即时访问。
我们在构建时将其融入架构中网络应用和SaaS:身份验证和秘密存储从一开始就设计好,而不是后期添加。
密码安全检查清单
- 每个网站都使用一个长(12+)、随机、独特的密码。
- 使用密码管理器,而不是记忆和重复使用。
- 在任何地方都启用双因素身份验证——至少是电子邮件和银行。
- 检查重要密码是否泄露;如果匹配,立即更改。
- 对于开发者:使用argon2/bcrypt加盐,尝试限制,在注册时进行泄露检查。
常见问题
在其他人的网站上检查密码安全吗?
这取决于检查的方式。正确的检查使用k-匿名性:密码在您的浏览器中被哈希,只有哈希的前五个字符离开,因此服务器永远不会看到密码。绝不要在发送完整密码的表单中输入密码。
在2026年,什么算是强密码?
长、随机且独特。实用的最小长度是12-16个字符,不能包含字典单词或个人数据,每个网站都要不同。长度比“特殊字符”更重要:几个随机单词的短语胜过一串短符号。
我需要密码管理器吗?
是的——这是在每个地方拥有不同强密码的最实用方法。你只需记住一个主密码,管理器会创建并填写其余密码。管理器本身被攻破的风险远低于重复使用密码的风险。
短信验证码是可靠的双因素认证吗?
比没有好,但比其他方式弱:短信验证码可以通过SIM卡交换被拦截。身份验证应用程序或硬件密钥更强大。不过,任何2FA都比没有要好得多。
我应该如何在服务器上存储用户密码?
仅以不可逆的哈希形式存储,使用argon2、scrypt或bcrypt,并为每个密码使用唯一的盐——绝不要以明文或可逆加密存储。普通SHA太快且不适合。此外,限制登录尝试次数并提供2FA。