跳转至

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.jd.com);
2.只有需要携带Cookie时,才允许设置Access-Control-Allow-Credentials头,且Origin白名单必须精细化设置,不允许如*.jd.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.敏感数据应加密存储;