应用上架市场安全测试报告指南
测试并填写《安全测试报告结果模板》并转成PDF格式进行提交。 报告最终内容可参考《某某应用安全测试报告结果(样例)》。常见问题
截图时,请将工具的完整界面全部截下来(包含请求内容、返回内容),不要进行压缩直接附在报告里。- 问: 报告需要提供哪些信息,是否每个用例都要测试? 答: 报告里指定的测试用例都是必须的安全检查点,报告提供安全评估需要关注的典型风险类型,需要ISV根据报告要求测试用例结合自己业务类型对 所有适用的接口进行安全测试。报告里需要体现的是对关键接口的测试过程,但实际测试内容不限于报告里体现的接口测试。
- 问: 公司没有相关的安全人员,是否可以不提供安全评估报告? 答: 不可以,报告里针对每项测试用例有推荐的测试方法和工具,比如burp suite,对于工具的使用可以在网上找到详细的使用规范,为了保障业务上线后的安全性,上线前的安全测试是必须和必要的。
-
问: 报告里每个测试用例有没有测试规范要求?
答: 测试用例分两种:数据检查和安全测试。数据检查类似端口扫描,使用中间件信息等,不涉及数据修改,需要记录真实的系统现状,提供必要的信息;使用工具检查的,需要提供截图信息,比如namp扫描结果。
安全测试类的用例,需要遵守如下规范进行测试:
- 系统发起正常请求,使用工具对正常发送的请求和服务端返回截图,同时对业务应用页面的展示信息进行截图。
- 在工具内修改网络请求信息,比如修改id,把修改后的网络请求和服务端返回内容在工具中截图,同时对业务应用页面的返回结果进行截图。
- 把工具和业务应用的截图都附在报告里。
- 问: 如果报告里提到的测试用例在业务中不存在怎么办? 答: 这种场景需要提供不适用的原因或者用到的替换技术,比如:如果没有短信模块,可以注明没有使用短信功能。
- 问: 已经做了参数防修改,权限校验测试的目的是什么? 答: 参数防修改和权限校验针对的场景是不一样的,前者是为了防止数据的伪造,校验数据的一致性,对于部分接口可能存在合法用户尝试访问非授权数据的场景,比如查看其他部门的信息,输入的信息是有效的,但是操作员不在授权范围内。
- 问: 测试过程很多,可不可以不截图? 答: 测试的目的是为了尽早发现风险,保障业务线上的安全性,截图只是用来记录测试过程,钉钉安全团队会根据测试的截图信息帮助分析和发现潜在的其他业务风险,截图是必要的。
- 问: 如果业务上线前做的测试比报告要求多,怎么处理? 答: 如果有其他方式和途径进行了安全报告里未覆盖的场景,建议把内容整理成文档,在报告里新建工作表作为附件放在工作表里。钉钉安全团队会协助分析报告,评估风险。
- 问: 测试截图的目的是为了什么? 答: 截图的目的是为了查看测试方法是否正确,是否按照要求进行了测试。
安全测试用例
准备工具
抓包改包工具:
端口扫描工具:
安全要求
- 必须配置并使用SSL协议, 并且代码和提供的服务中也都使用https协议。
- 上架应用必须使用钉钉账号体系,使用开放平台提供的接口获取用户身份信息,禁止自建登录体系。
安全测试结果
NO.01 EIP对外开放端口信息
填写表格并附扫描情况截图。 要求:EIP(弹性公网IP)仅开放必要服务端口(如22、80、443、3389端口);SLB仅开放web服务端口(如80、443端口)。如有特殊端口开放请说明场景。将”***“替换成EIP如有多个EIP(弹性公网IP) 则需提供所有的EIP端口开放情况。内网IP端口信息无需提供。nmap使用命令: nmap -sV -T4 -Pn -p1-65535 ip
NO.02 数据库信息
填写表格(数据库表、字段结构信息);如表和字段较多,仅填写与用户信息相关的表和字段。 要求:禁止存储用户的敏感信息(包括但不限于身份证号码、银行卡号等)。如有特殊需求请说明使用场景。NO.03 敏感信息
填写表格。 要求:- 返回或展示较敏感信息(例如手机号、邮箱)需进行打码处理。
- 服务端业务日志不允许打印或存储敏感信息。
NO.04 越权漏洞
使用工具: 抓包工具- 漏洞介绍:
- 漏洞成因:
- 修复方案:
- 测试方法:
- 水平越权: 例如存在一个查看订单信息的场景: A用户订单的订单号为1; B用户订单的订单号为2。A用户通过访问
.com/my?orderid=1查看自己订单号为1的订单信息。那么利用抓包工具,修改请求参数中的接口参数, 将A用户的.com/my?orderid=1请求中的orderid=1修改为orderid=2,查看能否获取B用户订单号为2的订单信息,如果能查看信息就存在水平越权漏洞。同理,除查看信息的场景外,增删修改类操作接口都是类似的测试方法。 - 垂直越权: 例如存在一个修改信息的场景: A用户订单的订单号为1,但A用户不具备修改自己订单信息的权限;管理员B具有修改所有订单信息的权限。管理员B通过访问
.com/my?orderid=all接口的方式,能够查看所有的订单。A用户通过访问本来只有管理员能操作的接口.com/my?orderid=all, 查看能否获取到所有订单信息, 如果能获取就存在垂直越权的漏洞。同理查看信息、增删修改类操作接口场景都是类似的测试方法。
- 测试结果:
NO.05 跨站脚本攻击漏洞(小程序可不进行此项测试)
- 漏洞介绍:
- 漏洞成因:
- 修复方案:
htmlspecialchars()函数对用户输入的内容做HTML转义。同时在cookie中加入httponly属性可以在一定程度上保护用户的cookie,减少出现XSS时损失。
- 测试方法:
"<img src=1 onerror=alert(123)/>或<script>alert(123)</script>。A用户或管理员在查看已提交表单内容的页面,插入的HTML代码是否成功执行了,比如是否执行了弹框。如果执行了,则存在跨站漏洞。
- 测试结果
NO.06 SQL注入漏洞
- 漏洞成因:
- 程序编写者在处理应用程序和数据库交互时,使用字符串拼接的方式构造SQL语句。
- 未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。
- 修复方案:
- 测试结果:
NO.07 跨站请求伪造漏洞
使用工具: 抓包工具- 漏洞成因:
GET http://bank.com/transfer.do?acct=BOB&amount=100 HTTP/1.1
当攻击者诱导用户点击下面的链接时,如果该用户登录该银行网站的凭证尚未过期,那么他便在不知情的情况下转给了MARIA 100000元钱:
http://bank.com/transfer.do?acct=MARIA&amount=100000
简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
- 修复方案(任选其一):
- 测试方法:
Referer: ***.com/my 修改为其他内容,再次发送请求。
- 测试结果
NO.08 隐私安全
填写表格,描述获取权限&数据的使用场景。 要求: 自采集填写: 进入 应用开发 > 基础信息 > 权限管理 页面,单击 用户信息使用说明,填写采集的用户信息及使用场景说明。钉钉会自行检测,已填写即可。如下图:
完成填写后,在样例报告中填写获取隐私数据所需场景的描述。
burpsuite使用&导入证书
设置代理
如下图所示设置代理,端口可自定义。 PC端: 设置burpsuite代理监听地址及端口 默认监听127.0.0.1的8080端口,根据实际测试的需求可以新增或修改监听地址或者端口。
移动端,以iOS为例:
填写burpsuite的代理地址及端口。
WIFI > HTTP代理 > 配置代理
导入证书
手机端在浏览器内访问代理地址http://ip:port下载并导入证书。
Tips:在iOS下,有两处需要设置信任。
- 设置 > 通用 > 关于本机 > 证书信任设置
- 设置 > 通用 > 描述文件与设备管理
拦截数据包&修改数据包
- 拦截数据包并发送到Repeater窗口。

- 在Repeater窗口修改数据包并重放。
- 在左侧窗口直接修改请求包内容,然后通过
Go按钮发送该请求;在右侧窗口可查看返回的内容。