API安全测试检查项小结

news2024/9/23 9:21:24

现如今开发基本上都是前后端分离,相比前端,后端的测试是最容易发现一些底层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 等等)。

六、防止抓包

应用正式发布的后应该对重要接口进行加密处理,防止第三方代理抓包对用户数据篡改。

七、服务器接口权限验证

服务器是否有对接口请求进行了权限验证。
如果去掉请求中的身份识别信息,判断服务器是否有做校验。

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

自动化测试视频教程、学习笔记领取传送门!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单线程JavaScript为何如此高效

什么是js执行机制 JavaScript 的执行机制指的是 JavaScript 代码在运行时的工作方式和顺序。它涉及以下几个关键概念&#xff1a; 单线程&#xff1a;JavaScript 是一门单线程的编程语言&#xff0c;意味着它只有一个主线程用于执行代码。这意味着 JavaScript 中的代码是按顺序…

编程(43)----------ConcurrentHashMap

在多线程中使用哈希表, 首先是不能使用HashMap的. 因为其本身并非线程安全. 与其相反HashTable则是安全的. 其原因在于本身给关键的方法加了锁. 但即便如此, 与HashTable相比, 更推荐使用ConcurrentHashMap. 其原因在于, 它在HashTable的基础上做了较多的优化: 上述提到, Hash…

自从前端用上了低代码,开发速度直接起飞

作为前端工作人员&#xff0c;我们都深知在这个快速发展的时代里&#xff0c;不断学习和掌握前沿技术是至关重要的。随着互联网的不断革新和新兴技术的崛起&#xff0c;我们需要保持敏锐的触角&#xff0c;紧跟潮流&#xff0c;才能在竞争激烈的市场中保持领先地位。 一直以来&…

MAC电脑垃圾好用的文件清理软件CleanMyMac X

古语云&#xff1a;“工欲善其事&#xff0c;必先利其器。”因此&#xff0c;一个运行流畅的Mac更能使我们的工作事半功倍。但又是什么导致电脑的运行不流畅呢&#xff1f; 其实这大多还是缓存垃圾过多、内存不足的原因。尝试安装了许多的垃圾文件清理软件&#xff0c;垃圾没有…

HashMap 为什么不能一边遍历一遍删除

前段时间&#xff0c;同事在代码中 KW 扫描的时候出现这样一条&#xff1a; 上面出现这样的原因是在使用 foreach 对 HashMap 进行遍历时&#xff0c;同时进行 put 赋值操作会有问题&#xff0c;异常 ConcurrentModificationException。 于是帮同简单的看了一下&#xff0c;印象…

为什么Qt成为工业软件开发的首选框架?

工业软件开发中使用Qt的主要原因有以下几点&#xff1a; 跨平台性&#xff1a;Qt是一个跨平台的C应用程序开发框架&#xff0c;可以在多个操作系统上运行&#xff0c;包括Windows、macOS、Linux等。这种跨平台性使得开发人员能够使用相同的代码库创建适用于不同操作系统的应用程…

Github-Readme-Stats 简明教程

注&#xff1a;本篇文章首发于 博客园sarexpine 为保持阅读的舒适性&#xff0c;可以选择移步至 博客园sarexpine 阅读&#xff0c;日后的文章将首发于 博客园sarexpine 平台&#xff0c;谢谢&#xff01; 1. 更新 Readme 文件 在你想要放置 Readme-WakaTime 的位置中放置以下…

Nginx【Nginx场景实践(动静分离、动静分离实战、缓存机制)】(十)-全面详解(学习总结---从入门到深化)

目录 Nginx场景实践_动静分离 Nginx场景实践_动静分离实战 Nginx场景实践_缓存机制 Nginx场景实践_动静分离 Nginx动静分离简单来说就是把动态和静态请求分开&#xff0c;不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求和静态请求分开&…

@Transaction事务导致的mysql连接耗尽源码分析

背景&#xff1a; Transaction注解是我们在日常的写代码过程中最常使用的事务注解了&#xff0c;本文就从spring源码的角度解析下这个注解的执行过程&#xff0c;以便分析为什么使用事务比正常的单sql执行更容易导致连接池耗尽 源码追踪&#xff1a; 本文假定使用PROPAGATIO…

音频怎么转文字?试试这三个简单的方法吧!

有时候我们会遇到一些比较重要的会议、讲座或者演讲&#xff0c;如果我们能够将这些声音记录下来&#xff0c;并将其转换为文字&#xff0c;就可以更加方便地保存和管理这些信息。这样&#xff0c;我们就不用再去听录音了&#xff0c;只需要看文字就可以了。此外&#xff0c;录…

智能指针的deleter机制

一、介绍 智能指针的deleter机制是指&#xff0c;当智能指针的引用计数降为0时&#xff0c;智能指针会自动调用一个指定的析构函数&#xff08;deleter&#xff09;来释放所管理的内存。这个析构函数通常是一个函数对象&#xff0c;可以是一个函数指针、一个lambda表达式或者一…

青少年机器人技术一级考试备考重点(四):功与能量以及常用传动装置

随着机器人技术的飞速发展&#xff0c;越来越多的青少年开始关注并参与其中。青少年机器人技术考试作为一项评估学生机器人技术水平的重要考试&#xff0c;备受广大青少年和家长的关注。为了更好地备战青少年机器人技术一级考试&#xff0c;了解考试的学习要点和备考重点是非常…

C++数据结构X篇_07_C++单向循环链表解决约瑟夫问题

本篇参考单向循环链表解决约瑟夫问题&#xff08;C&#xff09;整理&#xff0c;先搞懂结构框架&#xff0c;后期根据视频利用c对内容实现&#xff0c;也可以对c有更高的提升。 文章目录 1. 链表创建与初始化2. 添加插入、删除和打印函数3. 插入数据并核验4. 解决约瑟夫问题&am…

DM8:达梦数据库备份还原报错-文件已存在 -4558 file exists

DM8:达梦数据库备份还原报错-文件已存在 -4558 file exists 1 文件已存在 -4558 file exists2 使用 OVERWRITE 参数对数据库还原3 参数介绍 1 文件已存在 -4558 file exists 在数据库还原操作时&#xff0c;遇到报错文件已存在 -4558 file exists&#xff0c;可以使用OVERWRIT…

IP归属地与IP定位

IP归属地查询是指根据给定的IP地址&#xff0c;确定该IP地址所属的地理位置或网络服务提供商。这种查询可以帮助用户了解到访者的地理位置&#xff0c;有助于网络安全、反垃圾邮件等应用。 在实际应用中&#xff0c;IP归属地查询常用于以下几个方面&#xff1a; 网络安全&…

vcruntime140_1.dll详细修复方法(推荐使用这个方法)

vcruntime140_1.dll丢失要怎么办&#xff1f;其实很多人都在头疼这个问题&#xff0c;关于dll文件的丢失这事情是时常发生的&#xff0c;因为电脑的杀毒软件有时候会误杀&#xff0c;然后就会导致你的游戏程序都打开不了&#xff0c;你必须要修复好了才行&#xff0c;今天小编就…

【UE5 Cesium】09-Cesium for Unreal 子关卡应用实例(下)

效果 通过按钮点击事件实现子关卡的切换 步骤 新建两个Actor蓝图作为GeoMarker&#xff0c;分别命名为“BP_GeoMarker_BeiJing”、“BP_GeoMarker_ShangHai” 分别打开这两个蓝图&#xff0c;添加文本渲染组件 在指定的地理位置上拖入蓝图“BP_GeoMarker_BeiJing” 控制“BP_…

分布式缓存系统热点数据

一、背景 分布式缓存一般被定义为一个数据集合&#xff0c;它将数据分布&#xff08;或分区&#xff09;于任意数目的集群节点上。集群中的一个具体节点负责缓存中的一部分数据&#xff0c;整体对外提供统一的访问接口 Amazon 于 2007 年提出的一种改进的一致性哈希算法 [4]。…

华为OD机试真题 Java 实现【查找单入口空闲区域】【2022 Q4 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 给定一个 m x n 的矩阵&#xff0c;由若干字符 ‘X’ 和 ‘O’构成&#xff0c;’X’表示该处已被占据&#xff0c;’O’表示该处空闲&#xff0c;请找…

【JS】将表格数据下载为 .csv 文件

文章目录 代码实现 代码实现 1. 将表格数据转换为字符串格式 2. 字符串格式里面的,逗号表示换列 3. 字符串格式里面的\n符号表示换行实现 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><…