现如今开发基本上都是前后端分离,相比前端,后端的测试是最容易发现一些底层bug, 修复成本也低。今天主要聊聊接口的安全测试,以及常见的漏洞。
一、逻辑越权类
可以分为两类:
平行越权:权限类型不变,权限对象改变;
垂直越权:权限对象不变,权限类型改变;
举个例子,通过查看请求返回的数据,查看是否通过修改表示身份的字段来做跨权限请求:比如用户个人信息页,是否能通过字段自增去遍历别的用户信息;还有就是某个功能只有A权限用户可以使用,通过接口传B权限用户,验证是否能使用该功能。
二、输入控制类
XXE,Restful API 的注入漏洞,XSS,溢出,特殊字符的处理:
①在请求中,把某个字段的值加上两个单引号('),看是否能够提交到数据库当中,如果能够提交到数据库,那么就存在SQL注入漏洞;
②字段中包含 <script>alert(1)</script> 提交带有脚本标签的请求,检查是否存在XSS漏洞;
③上传文件接口,如果只能上传图片,不可以上传其他文件或者伪装成图片的可执行文件;
不能只在客户端对输入信息进行校验,服务端也应做校验。
三、接口滥用
废弃、没使用的接口应及时清理。
没有对带有敏感信息的接口限制请求频率,会导致各种爆破和遍历,造成数据泄露,同时接口被滥用也会导致系统资源被消耗,引入其他安全问题。
如短信验证码爆破、登录爆破、手机号遍历、身份证遍历等。
四、信息泄露
通过抓包,检查所请求的接口返回的数据,看有没有包含可利用的字段。
关键参数是否加密:比如登陆接口的用户名和密码是否加密 ;支付接口中,涉及用户的身份证号码、银行卡卡号、银行卡CVV码等之类的信息有无加密。
如果有使用第三方接口,也要检测第三方接口是否会泄露用户信息。
还有错误请求返回不包含敏感信息,如当用户登录失败的时候,不能明确指出是密码错误或者用户不存在,预防暴力撞破用户名或者密码。
服务端返回的任何服务错误信息不要返回给用户。
五、HTTP 响应头控制
发送 X-Content-Type-Options: nosniff 头;
发送 X-Frame-Options: deny 头;
发送 Content-Security-Policy: default-src 'none' 头;
删除指纹头 - X-Powered-By, Server, X-AspNet-Version 等等;
在响应中强制使用content-type,如果你的类型是 application/json 那么你的 content-type 就是 application/json。
不要返回敏感的数据, 如 credentials, Passwords, security tokens。
在操作结束时返回恰当的状态码(如 200 OK, 400 Bad Request, 401 Unauthorized, 405 Method Not Allowed 等等)。
六、防止抓包
应用正式发布的后应该对重要接口进行加密处理,防止第三方代理抓包对用户数据篡改。
七、服务器接口权限验证
服务器是否有对接口请求进行了权限验证。
如果去掉请求中的身份识别信息,判断服务器是否有做校验。
实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
自动化测试视频教程、学习笔记领取传送门!!!