对于接口的安全性测试,这几点你掌握了吗?

news2024/11/16 1:30:32

 

接口防刷

1.为什么会有人要刷接口?
  • 牟利:黄牛在 12306 网上抢票再倒卖。

  • 恶意攻击竞争对手:如短信接口被请求一次,会触发几分钱的运营商费用,当量级大了也很可观。

  • 压测:用apache bench 做压力测试。

2.什么行为判定为刷接口?
  • 次数多

  • 频率频繁,可能 1 秒上千次

  • 用户身份难以识别:可能会在刷的过程中随时换浏览器或者 ip

3.如何判断用户粒度

根据当前网页

  • 缺点:没有任何意义,一刷新页面用户的身份就变了

根据session

  • 缺点:当用户手动清除 cookie 的时候即失效

根据ip

  • 优点:伪造成本高

  • 缺点:要考虑一个公司、一个小区的人一般会共享一个 ip,所以适当的要放宽对单一 ip 的请求限制

ip 信息是存在请求头里的,而 https 对请求本身做了加密,可以防止 ip 信息被伪造或篡改。所以推荐服务器采用https传输。

如何处理恶意请求

1. 业务逻辑上拒绝该用户参与
  • 例如限制用户登录,用户必须达到一定条件才可以(任务限制,金额限制,参与次数限制)

2.奖励发放的限制
  • 奖励每天发放次数限制,奖励每天发放总量限制,用户每天参与次数限制,用户每天获取总量限制

3.IP频率限制

通过 memcached 和 redis 都有成熟的方案。

Memcached教程:

https://www.runoob.com/memcached/memcached-tutorial.html

4. 验证码&短信限制

可以通过要求用户输入验证码or短信验证码验证用户真实性,但是也要保证短信接口不会被刷。

  • 优点:可以精准识别请求是真人还是机器发出的,二次筛选出真正的用户

  • 缺点:不够人性化,用户操作时间长、体验差

5.用户权限判断

基础的用户行为分析,就是结合业务逻辑,在代码实现层面对进行完善的用户权限判断。

从代码层次限制用户

6.防范XSS、CSRF、SQL注入攻击

这是常见的WEB接口安全防范手段,XSS、CSRF、SQL注入,对参数过滤转义,表单验证等等。

7.人工干预

以上方法需要结合使用才能提高安全和破解的难度,单独使用都有很容易破解的方法,除此之外,人工干预也是很重要的,一定要在后台观察数据,及时发现异常的数据并排查隐患。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

Wiley数据库文献哪里比较全?去哪里下载比较高效

Wiley出版社1807年创建于美国,是一家具有超过200年历史的全球知名的出版机构,面向专业人士、科研人员、教育工作者、学生、终身学习者提供必需的知识和服务。 Wiley及旗下的子品牌出版了超过500位诺贝尔奖得主的作品。Wiley Online Library为全学科期刊全…

std::remove-----std::remove_if

std::remove和std::remove_if 是 C11 标准库中的一个算法函数. std::remove 作用 遍历一遍容器,将容器中所有不是指定元素的元素往前复制。 总之就是一句话: 把不该删除的移动到前面,后面的就是应该删除的。 注意: 1&#…

postgreSQL安装配置

安装 在ubuntu界面执行 sudo apt install postgresql安装完成后,切换到postgres (安装过程中自动创建) sudo su - postgres#然后执行psql,进入数据库 psql创建数据库用户 在数据库中执行create命令创建用户,并带有…

C++调用有依赖库的python函数(VS2017+WIN10+Anaconda虚拟环境)

情况1.在写的函数中依赖了能够pip的库,例如numpy库、torch库,见下面的函数: import numpy as np import torch def add1(a, b):# 确保a和b都是NumPy数组a_array np.array(a) if not isinstance(a, np.ndarray) else ab_array np.array(b) if not isins…

波搜索算法(WSA)-2024年SCI新算法-公式原理详解与性能测评 Matlab代码免费获取

​ 声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 原理简介 一、初始化阶段 二、全…

Android系统不同版本存储权限

一、Android存储简介 Android系统分为内部存储和外部存储 从Android6.0开始不断在更新存储(读写)权限,除了在AndroidManifest.xml文件里声明,app运行时也要动态申请使用对应的权限 提醒:应用私有存储不需要动态申请权…

100m/s高速轧制钢材 八轴测径仪检测毫无压力

关键词:八轴测径仪,在线测径仪,钢材测径仪,高速轧制 随着技术的提升,钢材的生产速度越来越快,一些高速生产的钢材,生产速度甚至达到了100m/s,这是一个非常快的速度。 如果汽车以120公里/小时的速度行驶,那么…

Shell之高效文本处理命令

目录 一、排序命令—sort 基本语法 常用选项 二、去重命令—uniq 基本语法 常用选项 三、替换命令—tr 基本语法: 常用选项 四、裁剪命令—cut 基本语法: 常用选项 字符串分片 五、拆分命令—split 基本语法: 六、 文件…

Pathlib,一个不怕迷路的 Python 向导

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 一个简单的库,也许能够开启我们的智慧之门, 一个普通的方法,也许能在危急时刻挽救我们于水深火热, 一个新颖的思维方式,也许能…

手机怎么下载别人直播间视频

手机下载直播视频,您需要按照以下步骤进行操作: 1. 打开直播平台,获取正在直播的链接,就是直播间的地址,然后粘贴在直接视频解析工具里,就可以同步下载直播视频画面。 2. 获取直播视频解析工具方法&#…

张驰咨询:六西格玛黑带项目的成功关键

六西格玛黑带项目通常被认为是比较难的,因为它们涉及的问题通常比较复杂,可能需要较长时间的分析、实验和协调。然而,通过遵循一定的步骤和方法,可以有效地实施六西格玛黑带项目。 以下是实施六西格玛黑带项目的基本步骤&#x…

字符串_字符函数和字符串函数

C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。 字符串常量适用于那些对它不做修改的字符串函数。 目录 1.函数介绍 1.1strlen 1.1.1strlen函数的模拟实现 1.2strcpy 1.2.1st…

【ARMv8/v9 系统寄存器 6 -- EL 异常等级判定寄存器 CurrentEL 使用详细将介绍】

文章目录 ARMv8/v9 EL 等级获取EL 等级获取函数实现EL 等级获取测试 ARMv8/v9 EL 等级获取 下面这个宏定义是用于ARMv8/v9架构下,通过汇编语言检查当前执行在哪个异常级别(Exception Level,EL)并据此跳转到不同的标签。 异常级别…

【ARMv8/v9 系统寄存器 5 -- ARMv8 Cache 控制寄存器 SCTRL_EL1 使用详细介绍】

关于ARM Cache 详细学习推荐专栏: 【ARM Cache 专栏】 【ARM ACE Bus 与 Cache 专栏】 文章目录 ARMv8/v9 Cache 设置寄存器ARMv8 指令 Cache 使能函数测试代码 ARMv8/v9 Cache 设置寄存器 关于寄存器SCTRL_EL1 的详细介绍见文章:【ARMv8/v9 异常模型入…

Linux---编辑器vim的认识与简单配置

前言 我们在自己的电脑上所用的编译软件,就拿vs2022来说,我们可以在上面写C/C语言、python、甚至java也可以在上面进行编译,这种既可以用来编辑、运行编译,又可以支持很多种语言的编译器是一种集成式开发环境,集众多于…

Java入门基础学习笔记24——While循环和do-while循环

1、While循环: 例1: package cn.ensource.loop;public class WhileDemo3 {public static void main(String[] args) {// 目标:掌握while循环的书写格式,以及理解其执行流程// 需求:打印多行Hello Worldint i 0;while…

【python量化交易】—— Alpha选股策略 - Qteasy自定义交易策略【附源码】

使用qteasy创建并回测Alpha选股交易策略 使用qteasy创建并回测Alpha选股交易策略策略思想第一种自定义策略设置方法,使用持仓数据和选股数据直接生成比例交易信号PS信号:第二种自定义策略设置方法,使用PT交易信号设置持仓目标:第三…

springboot004网页时装购物系统

springboot004网页时装购物系统 亲测完美运行带论文:获取源码,私信评论或者v:niliuapp 运行视频 包含的文件列表(含论文) 数据库脚本:db.sql其他文件:ppt.pptx论文/文档:开题报告.docx论文&…

yolov9训练自定义数据

1.训练yolov9,先准备好一份自定义数据.。到roboflow下载一份数据,数据格式是yolo格式。 2.到github下载yolov9源码 https://github.com/WongKinYiu/yolov9 3.为了方便配置环境,把代码上传到矩池云上面,使用云服务器 4.执行 pip i…

【软件测试】需求概念|软件的⽣命周期|开发模型|测试模型

目录 推荐 一、什么是需求 1.1 ⽤⼾需求 1.2 软件需求 二、开发模型 2.1 什么是“模型” 2.2 软件的⽣命周期 2.3 常⻅开发模型 2.3.1 瀑布模型 2.3.2 螺旋模型 2.3.3 增量模型、迭代模型 2.3.4 敏捷模型 2.4 测试模型 2.4.1 V模型 2.4.2 W模型(双V模型&#xff0…