Skip to content

产品安全设计Checklist

根据功能模块不一致进行编写。(需要不断挑战设计是否合理,不断优化)

通用功能

验证码

图形验证码

  • 图形验证码必须后端生成,且后端校验。
  • 图形验证码生成需要足够随机(具有不可预测性),且包括一定的干扰元素,如:颜色、位置、数量等。
  • 图形验证码必须满足有效期(有效时间与错误次数),过期后立即失效;使用后应该立即过期。
  • 每次请求需要使用新的图形验证码。

短信/邮箱验证码

  • 短信/邮箱验证码获取手机号/邮箱必须设置单位时间内发送频率。
  • 短信/邮箱验证码获取手机号/邮箱必须设置单位时间内发送总量。
  • 短信/邮箱验证码每次随机生成。
  • 短信/邮箱验证码必须满足有效期(有效时间与错误次数),过期后立即失效;使用后应该立即过期。关于短信验证码的有效期建议:4位不超过5分钟、6位不超过15分钟。
  • 请求获取短信的接口应该添加图形验证码或添加其它的风控手段。

判断账户是否存在

  • 尽可能不要存在此类接口。
  • 如果必须存在,需要对此类接口添加图形验证码或添加其它的风控手段。

密码策略

  • 密码长度应该不小于8位。
  • 密码复杂度不能低于三要素(大小写字母+数字);涉及风险级别较高的系统账户密码复杂度不能低于四要素(大小写字母+数字+特殊字符)。
  • 密码不能与常见弱口令匹配,如:123456、Qwer1234、Admin@110等。

会话管理

  • 每次会话生成不同的会话token/session,且token/session必须足够随机(具有不可预测性)。
  • 会话token/session必须设置合理的超时机制。
  • 账户注销/禁用后必须强制token/session过期。
  • 在会话Cookie中添加HttpOnlySecure属性。
  • 是否允许账户多设备登录,如果允许需要限制常用设备。

访问控制

  • 后台页面必须通过认证后才能访问。
  • 必须验证账户是否具备当前页面的访问权限。
  • 请求中不允许使用用户的userid、phonenum、email等作为用户的身份标识,需要使用token/session作为标识。
  • 用户只允许查看自己所拥有权限的功能、页面、数据。

用户功能

注册

  • 注册过程中需要校验用户的身份,如果不需要校验的注册需要添加验证码,且验证码满足验证码安全要求。

登录

  • 合理的提示文案:不论用户名错误还是密码错误,统一提示用户名或密码错误
  • 设置同一账号单位时间内允许登录失败的次数,通常为1分钟5次。超过次数后锁定账户一定时间(通常为1H);也可以针对该用户开启双因素校验。
  • 设置同一IP单位时间内允许登录失败的次数,通常为1分钟60次。超过次数后可以针对该IP开启双因素校验,不建议直接针对IP进行封禁,需要额外的验证。

找回密码

  • 合理的找回密码逻辑:输入用户身份信息、获取验证信息、校验验证信息、重置密码。
  • 密码必须满足密码策略。

修改信息

  • 修改密码时:需要校验用户绑定的身份信息。
  • 修改密码时:必须同时校验原始密码,且新密码应该满足密码策略。
  • 修改手机号时:优先校验原手机号,如果原手机号不可用,可以通过其它方式来校验。
  • 修改手机号时:必须校验新的手机号是否属于用户所有。

实名认证

  • 需要多重的校验手段,如:身份证照片+手持身份证照片。
  • 用户的身份信息需要满足传输安全、数据存储安全与数据使用安全。

交易功能

未开始编写。

充值/提现功能

电商购物功能

  • 禁止购买已下架的商品。

其它功能

日志功能

  • 需要记录用户日志数据方便后期审计。
  • 日志数据存储需要满足合理的时长。
  • 日志中禁止记录敏感信息,如:用户身份信息、用户账号密码信息等。

安全传输功能

  • 业务系统采用全站https。
  • 敏感数据(用户的账号密码、token/session、身份信息等)需要以http post的方式提交。

数据存储安全

  • 敏感数据需要加密保存,且加密算法满足算法安全需求。

数据使用安全

  • 敏感数据脱敏展示。

上传/下载

  • 上传文件应该满足格式要求,不允许用户上传脚本类型文件。
  • 限制下载文件路径与下载文件的权限。

导入/导出

  • 限制用户单位时间内导出数据。
  • 校验用户导入数据格式。

算法安全

  • 不要使用不安全的算法进行加密:MD5、DES、SHA1等,推荐使用:AES128、RSA2048、DSA2048。
  • 不要使用私有加密算法。

备注

  1. 用户身份信息:手机号、邮箱、身份证号等。

参考资料

本文参考了VIPKID的安全设计红线。

安全设计Checklist

金融科技SDL安全设计checklist