11. Web应用安全业务自查checklist
作者:realjac
协作:Melody
1. 概述
1.1. 编制目的
- 此checklist用于业务线测试或开发人员在上线前进行安全自查
- 安全前置落地实施,是将安全需求嵌入开发流程的急先锋
1.2. 编写原则
- 便于业务理解常见安全风险
- 方便业务检查项目中存在的最显而易见的风险点
- 不求覆盖最全,保证能在业务落地使用
- 基于公司常见场景出发的经验归纳
2. checklist内容
| 业务功能 | 自查安全项 | 风险等级 | 满足/不满足/不适用 | 备注 |
|---|---|---|---|---|
| 登录 | 1.系统应接入账号安全组统一登录平台 | 中 | ||
| 2.自建登录功能应使用验证码等二次验证机制,且验证码应在每次登录成功或失败后失效刷新; | 中 | |||
| 3.如密码等敏感信息应加密传输; | 中 | |||
| 4.外网系统应使用https传输登录信息; | 高 | |||
| 5.用户登录失败的提示信息应为“用户名或密码错误”/“登录失败”等模糊提示; | 低 | |||
| 注册 | 1.应有二次审核机制,如手机/邮箱等方式验证 | 高 | ||
| 2.短信发送接口应限制针对同一手机号的请求频率; | 低 | |||
| 密码找回 | 1.应有二次审核机制,如手机/邮箱等方式验证,不可修改需要验证的手机号/邮箱等; | 高 | ||
| 2.短信发送接口应限制针对同一手机号的请求频率; | 低 | |||
| 3.在每一步环节应判断上一步的合法性; | 中 | |||
| 退出登录 | 1.session认证会话应配置过期时间,一般建议60min; | 低 | ||
| 2.点击退出后应销毁服务端认证session,使用户端cookie在退出登录后失效; | 中 | |||
| 上传 | 1.上传功能文件后缀应使用白名单限制为业务需要的文件类型; | 高 | ||
| 2.应限制上传目录的权限,不允许赋予上传目录和上传的文件执行权限; | 中 | |||
| 3.建议使用公司统一的文件存储系统,如… | 中 | |||
| 下载 | 1.下载目录应被限定在固定目录内,不允许被../../等路径操作跨目录访问其他文件; | 高 | ||
| 2.敏感资源应设置访问控制权限,只允许拥有授权的角色下载; | 高 | |||
| 跨域需求接口 | 使用CORS跨域时,CORS安全配置: | |||
| 1.应设置Access-Control-Allow-Origin及Origin白名单域名为可信域(xx.test.com); | 中 | |||
| 2.只有需要携带Cookie时,才允许设置Access-Control-Allow-Credentials头,且Origin白名单必须精细化设置,不允许如*.test.com的配置。 | 高 | |||
| JSONP接口: | ||||
| 1.必须使用白名单严格限制请求来源referer; | 高 | |||
| 网络资源调用 | 1.应使用白名单限定允许调用的URL,特别针对内网的请求应严格限定; | 高 | ||
| 调用系统命令 | 1.应使用白名单限定允许调用的系统命令; | 高 | ||
| 敏感操作接口 | 1.应使用白名单限制请求来源referer或增加token等机制验证请求发起者身份; | 高 | ||
| 2.应记录应用操作日志; | 中 | |||
| 3.敏感操作接口如订单支付等,应使用悲观锁或乐观锁保证事务的ACID特性,解决并发竞争问题; | 高 | |||
| 4.对敏感资源进行操作时,应在服务端校验资源标识归属人是否与当前登录人一致; | 高 | |||
| 漏洞扫描 | 1.上线前应使用自动化漏洞扫描工具扫描测试,确定无漏洞和安全风险; | 必须 | ||
| 源代码审计 | 1.上线前应使用代码扫描工具进行扫描,确定无漏洞和安全风险; | 必须 | ||
| 数据安全 | 数据处理:(参考公司数据分级标准) | |||
| 1.对用户可控输入且最终会回显输出到页面的数据,应使用公司安全防护组件进行转义安全编码后再输出; | 中 | |||
| 2.应将SQL语句预编译处理,未能预编译处理的语句如order by子句应使用白名单控制用户允许的输入; | 高 | |||
| 3.应在前端对敏感字段(如手机号、身份证、银行卡号)脱敏展示; | 中 | |||
| 数据传输: | ||||
| 1.外网系统应使用https传输数据; | 中 | |||
| 2.敏感字段应脱敏/加密处理; | 中 | |||
| 数据存储: | ||||
| 1.日志中不应包含明文或未脱敏敏感数据; | 低 | |||
| 2.敏感数据应加密存储; | 中 |