关于 security-ux
security-ux 是面向界面设计工作流的安全体验设计技能,帮助团队规划认证、权限、恢复和安全通知。内容涵盖信任表达、知情同意、无障碍设计及常见反模式。
主要功能
- 01评估认证与账户恢复体验
- 02设计 MFA、密码和会话流程
- 03改善权限、同意与信任提示
- 04规划异常及泄露通知
- 05检查安全界面的无障碍性
适用场景
- 01重新设计登录与 MFA 设置
- 02梳理账户丢失后的恢复流程
- 03改进权限申请和同意界面
- 04制定安全事件通知方案
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aladicf/ better-web-ui --skill security-ux安装后在 Claude Code 中输入/security-ux确认已加载。
详细介绍
构建清晰易懂、赢得用户信任而非令其望而生畏的安全界面。目标是让用户感到安全且掌控自如,而不是觉得自己因安全要求而受到惩罚。
有关登录、多因素身份验证(MFA)、会话过期、密码体验和恢复流程的指导,请参阅身份验证和账户恢复参考文档。 有关角色编辑器、申请访问流程、访问遭拒后的恢复以及高风险权限变更的指导,请参阅权限和角色体验参考文档。 有关坚定有力的用户体验文案、诚实的进度与同意文案,以及维护信任的产品行为,请参阅界面诚实性参考文档。 有关安全相关故障发生后的处理方式,请参阅错误恢复参考文档。
必须完成的准备工作
用户通过 /security-ux 启动此工作流。此技能启用后,加载 $frontend-design — 其中包含设计原则、反模式和上下文收集协议。继续之前,遵循该协议 — 如果尚无设计上下文,必须先加载 $setup。此外,还需了解:产品面临何种威胁模型、已实现哪些安全功能,以及用户目前在哪些方面对安全感到困惑或焦虑。
评估安全体验需求
确定安全与用户体验的交汇点:
- 身份验证流程:用户如何登录?MFA 是必需还是可选?当前流程有多繁琐?
- 密码体验:密码要求是否合理?是否提供创建强密码的指导?
- 信任信号:界面是否清晰地传达安全信息(HTTPS 指示、已验证徽章、加密说明)?
- 恢复路径:用户失去访问权限时会发生什么?恢复流程是否既安全又切实可行?
- 泄露与异常响应:产品如何通知用户可疑活动或数据泄露?
- 权限与同意:用户是否能在充分了解的情况下决定分享哪些内容?
安全体验维度
身份验证
登录流程:
- 保持登录表单简洁:电子邮件和密码,或社交账号身份验证选项
- 提供密码显示/隐藏切换功能,让用户可以核对输入内容
- 登录失败时不要清空电子邮件字段
- 只有在不会助长账户枚举攻击时,才区分“未找到电子邮件地址”和“密码错误”
- 对失败尝试进行速率限制,并清晰显示冷却时间提示
多因素身份验证(MFA):
- 提供多种 MFA 方式(TOTP 应用、SMS、硬件密钥、备用代码)
- 默认使用用户已设置的最安全方式
- 提供清晰的设置说明和可视化指南
- 允许用户为设备命名,以便识别正在批准的设备
- 在设置期间显示恢复代码,并提示用户保存
- 不要让 MFA 给人惩罚的感觉;应将其描述为一种保护措施
会话管理:
- 在设置中显示活动会话及设备和位置信息
- 允许用户撤销单个会话
- 当有来自陌生设备或地点的新登录时通知用户
- 谨慎使用“记住此设备”,并解释其含义
密码体验
避免令人沮丧的要求:
- 最低长度(12 个字符以上)比复杂度规则更重要
- 解释原因:“密码越长,越难猜”
- 用户输入时就显示强度指示器,而不是等到失去焦点时才显示
- 允许使用密码短语(“correct horse battery staple”)
- 如果长度足够,不要强制要求随意混用字符(一个大写字母、一个符号)
- 绝不要随意要求密码过期;这会促使用户养成不安全的习惯
密码创建指导:
- 建议使用生成的密码或密码短语
- 在用户开始输入之前就显示要求,而不是等用户失败后再显示
- 使用行内验证检查长度,不要等到提交时才弹出提示
信任指标
视觉信号:
- 在敏感字段(付款、密码)旁显示锁形图标
- 在适当位置显示安全徽章或认证标志(PCI DSS、SOC 2)
- 使用 HTTPS,并在浏览器中显示安全连接指示标志
- 用通俗易懂的语言说明加密(“您的数据已加密”),而非使用专业术语
透明度:
- 在索取数据前,说明收集哪些数据以及原因
- 在同意复选框旁显示隐私政策链接
- 用通俗易懂的语言说明安全设置,避免使用企业术语
- 允许用户查看并导出自己的数据
账户恢复
安全且易用:
- 提供多种恢复方式(电子邮件、电话、备用代码、可信联系人)
- 恢复前验证身份;不要为了方便而跳过步骤
- 启动恢复流程时,向现有联系方式发送通知
- 为恢复链接和代码设置有效期限
- 恢复后,执行敏感操作前要求重新进行身份验证
恢复体验:
- 逐步引导用户完成恢复流程
- 说明每一步将会发生什么
- 如果某种恢复方式失败,提供明确的替代方案
- 不要让用户陷入循环:恢复账户必须使用他们已经丢失的东西
数据泄露和异常通知
数据泄露通知:
- 用户账户可能遭到入侵时,及时通知用户
- 明确说明发生了什么,以及哪些数据受到影响
- 提供明确、即时的操作建议:更改密码、检查会话、启用 MFA
- 不要把数据泄露通知埋在营销邮件中
异常提醒:
- 有异常登录尝试时,向用户告知设备和位置
- 允许用户直接通过通知批准或阻止该尝试
- 提供“这是我”和“这不是我”两个选项,而不只是发送信息提醒
- 不要误报过多;过多的误报会让用户习惯性地忽略提醒
同意与权限
知情同意:
- 用通俗易懂的语言说明用户同意的内容,避免使用法律术语
- 采用渐进式披露:先显示摘要,并允许展开查看详情
- 针对不同用途分别征求同意(营销与功能)
- 允许用户像授予同意一样轻松地撤回同意
- 不要预先勾选同意复选框
无障碍
- 确保 MFA 验证码输入框足够大,便于在移动设备上输入
- 通过视觉方式和屏幕阅读器提供 TOTP 验证码剩余时间
- 对安全警报和通知使用
aria-live - 确保仅凭颜色之外的视觉特征也能感知信任指标
- 确保整个恢复流程都可通过键盘操作
反面模式
- 安全作秀:在不敏感的页面上显示锁形图标,实际上却没有提供任何保护
- 随意规定密码复杂度:要求密码包含符号和数字,却允许密码很短
- 将数据泄露归咎于用户:“您本应启用 MFA”,而不是“我们正在帮助您保护账户”
- 隐藏安全设置:将 MFA 和恢复选项藏在用户找不到的菜单中
- 虚假紧迫感:在常规验证场景中声称“您的账户将在 24 小时内删除”
- 没有恢复途径:用户丢失手机后,账户便永久锁定
- 充斥术语的安全文案:使用“通过 TOTP 启用 2FA”,而不是“添加身份验证器应用以增强安全性”
- 对数据泄露保持沉默:用户数据遭到泄露时不通知用户
- 预先勾选同意复选框:有损信任,并且通常违反相关法规
- 安全措施不一致:MFA 很强,但薄弱的密码恢复机制却能绕过它
验证安全体验质量
发布前:
- 登录流程简洁且宽容
- MFA 设置清晰,并提供多种方式
- 密码要求优先考虑长度,而非随意设定的复杂性
- 信任指标诚实且具体
- 恢复途径既安全又易于使用
- 泄露和异常通知及时且可采取行动
- 用户同意应基于充分知情、细化到具体事项,并且易于撤销
- 安全相关文案使用通俗语言,而非行话
- 警报应足够具体,便于采取行动,但也不能过于频繁,以免沦为噪声
- 界面应让用户感到安全且能掌控局面,而非受到惩罚
评论
支持 Markdown