密码强度检测
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/dzl20266512。
技能介绍
问题:密码强度不该被“顺手评一下”
注册和改密表单都想要强度反馈,但常见实现有两个坑:要么把明文密码 POST 到后端或第三方评分服务,要么只做 length >= 8、是否含数字这类静态正则。前者扩大了明文暴露面,密码一旦离开浏览器,就不再只是“客户端校验”;后者只能挡住最低级口令,无法解释为什么 Tr0ub4dor&3 仍然容易被猜出。实际风险来自用户把账号名、邮箱前缀、常用短语重组成密码,这些信息很难在纯规则里体现,却会显著降低搜索空间。
在表单旁给一个可信的强度结果,前提是不把密码发送出去,同时能把“太弱 / 一般 / 较强”翻译成可执行的下一步。
技能如何工作:本地调用 zxcvbn 的核心流程
该技能的目标是把 zxcvbn 封装成前端可调用的强度检查能力,用于账号注册与修改密码场景:
- 本地评估:在浏览器侧对输入的密码做强度计算,密码不出页面,不依赖后端接口或第三方评分。
- 可读结果:输出至少包含
score(0~4)、中文强度等级、guesses或可读的猜测次数估算,以及 1~3 条改进建议。 - 上下文输入:允许把用户名、邮箱本地名等作为
user_inputs传入,专门降低“密码等于账号”这类低熵组合的得分。 - 界面约束:UI 只做强度条和文案展示;不替用户生成并自动填入不可见密码,除非用户明确要求生成器另做。
- 动效偏好:尊重减少动效设置,强度条可以不做动画,只保证状态变化可读。
关键步骤如下:
- 安装
zxcvbn或维护中的兼容包,封装checkPasswordStrength。 - 在密码输入框监听
@input,本地更新强度条;同时传入账号相关userInputs。 - 自测覆盖边界:确认
123456评为很弱,较长无规律口令得到更高score,并验证过程中没有网络请求。
适用边界:把能力用在该用的地方
它适合注册和改密这类需要即时强度反馈的表单,也适合希望在客户端完成评估、减少服务端压力的项目。不适合把密码明文发送到任何第三方“测强度”服务;该技能明确禁止这类网络外传行为。
使用时需要注意:
- 不要替代口令生成器:技能默认不生成密码、不自动填入;若需要生成能力,应作为独立功能实现。
- 不要只盯分数:
guesses与建议比单一score更能说明风险,建议在 UI 中同时呈现。 - 不要忽略 userInputs:若表单已有用户名或邮箱,应传入本地值,避免“密码=账号”被高估。
- 不要默认有动画:尊重减动效偏好,强度条可在无动画状态下完成状态切换。
使用场景
- 在注册页面,需要在不传输密码到后端的情况下,实时显示密码强度并提供改进建议
- 修改密码时,希望本地计算强度评分,同时将用户名作为上下文输入降低弱密码得分
- 设计表单时,需要在客户端完成密码强度检测,避免明文传输到第三方服务
- 为密码输入框添加强度条和中文提示,要求支持减动效偏好设置
适合人员
- 前端工程师,需要集成不传输密码的本地强度检测功能
- 安全团队成员,关注如何避免明文密码外传并符合合规要求
- 运维人员,希望在注册/改密流程中添加客户端安全检查
- 表单开发者,需要在不依赖后端的情况下实现密码强度提示