一、定义
| 详细内容 |
|---|
| 弱密码是指易被猜测、破解或通过自动化工具快速攻破的密码,通常因复杂度低、长度短或可预测性高导致安全风险。 |
二、常见形势
| 形式 | 示例 | 风险说明 |
|---|---|---|
| 简单数字/字母组合 | 123456, password |
易被暴力破解或字典攻击。 |
| 默认密码 | admin/admin, root/root |
设备出厂默认密码未修改,攻击者可直接利用。 |
| 重复使用密码 | 同一密码用于多个平台 | 一个平台泄露后,其他账户均受威胁。 |
| 短密码 | 长度<8位(如abc123) |
破解时间短,安全性低。 |
| 可预测密码 | 包含生日、姓名(如John1990) |
攻击者可通过社交工程或信息收集猜测密码。 |
| 静态密码 | 长期不更换的密码(如Qwerty1!使用3年) |
即使复杂,泄露后长期有效,风险持续存在。 |
三、危害
| 具体影响 |
|---|
| 数据泄露:窃取用户个人信息、财务数据等。 |
| 账户劫持:发送垃圾邮件、恶意转账或操作。 |
| 系统入侵:获取管理员权限,植入恶意软件或渗透内网。 |
| 合规风险:违反GDPR、HIPAA等法规,面临法律处罚和声誉损失。 |
四、防范措施
| 防范措施 | 措施分类 | 具体方法 |
|---|---|---|
| 密码策略 | 强制复杂度要求 | 最小长度≥12位,包含大小写字母、数字、特殊字符;禁止常见弱密码(黑名单过滤)。 |
| 密码策略 | 密码历史限制 | 禁止重复使用最近5次用过的密码。 |
| 密码策略 | 密码过期机制 | 每90天提示更换密码(需平衡安全性与用户体验)。 |
| 存储安全 | 哈希加盐存储 | 使用bcrypt、Argon2等强哈希算法,添加唯一盐值(Salt)。 |
| 存储安全 | 禁止日志记录密码 | 确保密码不在日志、调试信息中泄露。 |
| 认证流程 | 多因素认证(MFA) | 结合密码+短信验证码/硬件令牌/生物识别(如指纹)。 |
| 认证流程 | 限速与锁机 | 登录失败5次后锁定账户或要求验证码。 |
| 认证流程 | 无密码认证 | 使用OAuth、WebAuthn等标准(如"通过Apple登录")。 |
| 用户教育 | 密码生成器 | 提供随机密码生成工具(如16位T7k@9Lp#2Qx!vZ$m)。 |
| 用户教育 | 密码强度提示 | 实时反馈复杂度(如"弱/中/强")。 |
| 用户教育 | 安全教育 | 通过提示、教程告知用户弱密码风险。 |
| 开发实践 | 输入验证 | 防止SQL注入,确保密码字段不被篡改。 |
| 开发实践 | 安全传输 | 使用HTTPS传输密码,避免中间人攻击。 |
| 开发实践 | 定期安全审计 | 检查代码中是否存在硬编码密码、弱哈希等漏洞。 |
五、案例分析
| 案例名称 | 问题描述 | 教训 |
|---|---|---|
| LinkedIn数据泄露(2012) | 650万用户密码以SHA-1哈希存储,被快速破解。 | 避免使用弱哈希算法,需加盐并采用慢哈希(如bcrypt)。 |
| IoT设备默认密码攻击 | 摄像头/路由器使用默认密码(如admin/admin),被Mirai僵尸网络利用发起DDoS攻击。 |
强制用户首次使用时修改密码,或采用设备唯一凭证。 |
六、未来趋势
| 趋势方向 | 具体技术/标准 |
|---|---|
| 去密码化 | FIDO2、WebAuthn、苹果"通过Apple登录"。 |
| AI辅助检测 | 机器学习分析用户行为,识别异常登录。 |
| 区块链身份管理 | 去中心化身份系统(如DID)。 |
七、密码强度校验:实时反馈与拦截
| 强度等级 | 条件 |
|---|---|
| 1(弱) | 仅包含1类字符(如纯数字或纯小写字母) |
| 2(中) | 包含2类字符(如数字+小写字母) |
| 3(强) | 包含3类字符(如数字+小写字母+大写字母) |
| 4(极强) | 包含4类字符(数字+大小写字母+特殊字符)且长度≥12位 |
function checkPasswordStrength(password) {
let modes = 0;
if (/\d/.test(password)) modes++; // 数字
if (/[a-z]/.test(password)) modes++; // 小写字母
if (/[A-Z]/.test(password)) modes++; // 大写字母
if (/[\W_]/.test(password)) modes++; // 特殊字符
if (password.length < 8) return 0; // 密码过短
if (modes === 1) return 1;
if (modes === 2) return 2;
if (modes === 3 && password.length >= 10) return 3;
if (modes === 4 && password.length >= 12) return 4;
return 0; // 其他情况视为弱密码
}
可根据实际需求调整表格内容,例如增加"行业合规要求"或"具体工具推荐"(如密码强度检测库zxcvbn)。