mcpField
S
security-ux

security-ux

github.com/aladicf设计与 UI46528 次安装23 周前更新
代码仓库

关于 security-ux

security-ux 是面向界面设计工作流的安全体验设计技能,帮助团队规划认证、权限、恢复和安全通知。内容涵盖信任表达、知情同意、无障碍设计及常见反模式。

主要功能

  1. 01评估认证与账户恢复体验
  2. 02设计 MFA、密码和会话流程
  3. 03改善权限、同意与信任提示
  4. 04规划异常及泄露通知
  5. 05检查安全界面的无障碍性

适用场景

  1. 01重新设计登录与 MFA 设置
  2. 02梳理账户丢失后的恢复流程
  3. 03改进权限申请和同意界面
  4. 04制定安全事件通知方案

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aladicf/better-web-ui --skill security-ux

安装后在 Claude Code 中输入/security-ux确认已加载。

详细介绍

构建清晰易懂、赢得用户信任而非令其望而生畏的安全界面。目标是让用户感到安全且掌控自如,而不是觉得自己因安全要求而受到惩罚。

有关登录、多因素身份验证(MFA)、会话过期、密码体验和恢复流程的指导,请参阅身份验证和账户恢复参考文档。 有关角色编辑器、申请访问流程、访问遭拒后的恢复以及高风险权限变更的指导,请参阅权限和角色体验参考文档。 有关坚定有力的用户体验文案、诚实的进度与同意文案,以及维护信任的产品行为,请参阅界面诚实性参考文档。 有关安全相关故障发生后的处理方式,请参阅错误恢复参考文档。

必须完成的准备工作

用户通过 /security-ux 启动此工作流。此技能启用后,加载 $frontend-design — 其中包含设计原则、反模式和上下文收集协议。继续之前,遵循该协议 — 如果尚无设计上下文,必须先加载 $setup。此外,还需了解:产品面临何种威胁模型、已实现哪些安全功能,以及用户目前在哪些方面对安全感到困惑或焦虑。

评估安全体验需求

确定安全与用户体验的交汇点:

  1. 身份验证流程:用户如何登录?MFA 是必需还是可选?当前流程有多繁琐?
  2. 密码体验:密码要求是否合理?是否提供创建强密码的指导?
  3. 信任信号:界面是否清晰地传达安全信息(HTTPS 指示、已验证徽章、加密说明)?
  4. 恢复路径:用户失去访问权限时会发生什么?恢复流程是否既安全又切实可行?
  5. 泄露与异常响应:产品如何通知用户可疑活动或数据泄露?
  6. 权限与同意:用户是否能在充分了解的情况下决定分享哪些内容?

安全体验维度

身份验证

登录流程:

  • 保持登录表单简洁:电子邮件和密码,或社交账号身份验证选项
  • 提供密码显示/隐藏切换功能,让用户可以核对输入内容
  • 登录失败时不要清空电子邮件字段
  • 只有在不会助长账户枚举攻击时,才区分“未找到电子邮件地址”和“密码错误”
  • 对失败尝试进行速率限制,并清晰显示冷却时间提示

多因素身份验证(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