VIPKID产品设计与开发安全红线 V1.0 | | | | |
分类 | 名称 | 潜在安全风险 | 安全要求 | 备注 |
帐号安全 | 验证帐号是否存在接口 | 利用此接口批量获取已存在帐号列表 | 此类接口必须提供验证码,并且验证码需要满足相应安全要求 | |
| 注册功能 | 垃圾/恶意注册 | 注册页面必须提供验证码,并且验证码需要满足相应安全要求 | |
| 登录功能 | 暴力破解 | 同一帐号固定时间范围(比如1分钟)内登录失败次数达到特定次数(比如5次),
24小时内该帐号登录都强制启用验证码验证,并且验证码需要满足相应安全要求 | |
| | 撞库攻击 | 同一IP地址固定时间范围(比如1分钟)内登录失败次数达到特定次数(比如60次),
24小时内该IP登录都强制启用验证码验证,并且验证码需要满足相应安全要求 | |
| 修改密码 | 密码被攻击者恶意修改 | 修改密码时采用双因素认证方式,除了验证原密码是否正确,
还应该同时验证用户绑定邮箱、手机号等 | |
| 错误提示 | 攻击者利用返回错误信息进行攻击 | 用户名或密码错误时,返回的提示信息必须一致(比如:输入的用户名或密码错误) | |
| 登录与注销 | 用户无法主动注销 | 有登录功能的系统必须同时提供注销功能 | |
验证码安全 | 图形/短信/邮箱验证码 | 1、验证码被破解或绕过
2、验证码发送接口被滥用 | 每次请求消耗一个图形验证码 | |
| | | 图形验证码生成足够随机,具有不可预测性 | |
| | | 必须在服务端验证图形验证码是否正确 | |
| | | 验证码必须设置有效期(有效时间和错误次数),过期失效 | |
| | | 使用短信/邮件验证时,必须限制同一手机号或邮箱的验证码发送频率 | |
会话安全 | 会话超时 | 会话一直有效 | 会话token/session必须设置超时机制 | |
| 会话更新 | 存在会话固定漏洞 | 帐号登录成功后,必须更新会话ID;帐号注销后,必须强制session/token过期 | |
| http only | 当系统存在XSS漏洞时导致用户cookie泄露 | 身份认证相关cookie必须设置http only |
访问控制 | 页面访问控制 | 未授权访问漏洞 | 1、后台页面必须在登录状态下才可访问; |
| | | 2、验证当前登录帐号是否有权限访问当前页面 |
| 用户访问控制 | 垂直权限、水平权限漏洞 | 验证当前登录帐号是否有权限访问当前功能、数据、页面等 |
传输安全 | 可信传输通道 | 流量劫持、信息泄露 | 核心业务系统采用全站https |
| 敏感参数提交方式 | 造成敏感数据泄露 | 敏感参数(如帐号密码、用户身份认证token、身份证号等)必须通过http post方式提交,严格禁止通过http get方式提交 |
存储安全 | 密码安全存储 | 敏感数据泄露 | 禁止数据库、日志文件中使用不安全算法【1】存储用户密码 |
| 敏感数据脱敏存储 | | 除用户密码外,其他用户敏感数据(如手机号、邮箱、身份证号等)应脱敏存储 |
上传下载 | 文件判断 | 任意文件上传、下载漏洞 | 对上传文件后缀进行白名单限制,严格判断文件内容与类型是否匹配 |
| 目录跳转 | | 禁止客户端自定义文件下载路径(如:使用../../../../进行跳转) |
| 目录权限 | | 存储上传文件的目录必须禁止脚本执行权限 |
日志审计 | 审计内容 | 无法记录、审计用户操作行为 | 自建用户系统,必须记录用户所有敏感操作日志;要求可以通过记录日志查询到
谁、什么时间、做过什么操作 |
| 日志清除 | 日志被恶意删除 | 除审计用户外,其他人员不应具备日志修改、删除或清空的权限,必须记录日志清空的行为 |
| 日志存储 | 日志被攻击者非常获取 | 禁止将日志直接保存在可被浏览器访问到的WEB目录中 |
其他 | 后门 | 系统中被预留后门 | 禁止在代码中留置后门 |
备注【1】 | 不安全算法 | 明文、标准MD5算法、Base64编码、私有算法等 | |