API安全性的要素与开发人员必修课测试

news2024/11/27 8:28:32


一、API安全性的要素主要包括以下几点:

 

1.身份验证和访问控制:API应该通过身份验证来验证请求的源,确保只有授权的用户或应用程序才能访问API。这可以通过使用API密钥、访问令牌、OAuth令牌或其他身份验证机制实现。


2.数据加密:API应该使用安全的数据传输协议(如HTTPS)来保护数据在传输过程中的安全性,同时将重要数据加密;这可以通过SSL证书来实现。


3.数据完整性:API应该验证请求和响应的完整性,确保数据在传输过程中没有被篡改或更改。


4.日志和监控:API应该记录所有访问,并监控所有请求以检测异常和安全威胁。此外,应该设定警报机制,以便在发生异常情况时通知相关人员。


5.限制访问:API应该遵循“最小权限原则”来限制不必要的访问。这可以通过授权松散耦合的API端点和仅授权需要的资源来实现。


6.漏洞管理:API应该积极进行漏洞管理,及时补丁安全漏洞和加固API的安全性。


二、为了确保API提供了必要的安全性、可靠性和性能,这不可避免地涉及到开发、持续执行和忠实地维护广泛的复杂测试。


以下是5个关键的 API测试“ 必须具备”,可以帮助你实现这一点:

1.智能测试创建和自动验证
由于api的极端暴露和潜在的误用,使得测试范围更广的条件和角落用例变得至关重要,自动化就成为了最重要的问题。在SOA的内部范围内,使用有限的或手动验证创建和执行简单的自动化测试可能已经足够了,但是需要更复杂和更广泛的自动化,以确信您的api足够健壮,能够在环境中生存下来。您需要一个自动化的级别,它为您提供一组全面的功能测试用例,这些测试用例可以以系统的方式重复。

为此目标推荐的功能包括一个直观的界面,用于跨消息传递层、esb、数据库和大型机自动化复杂场景:

定义api中使用的广泛协议和消息类型的自动化测试场景:REST、JSON、MQ、JMS、EDI、固定长度消息等。
在端到端测试场景中涉及的多个端点上自动化丰富的多层验证。
参数化来自数据源、从测试场景或变量中提取的值的测试消息、验证和配置。
定义复杂的测试流逻辑而不需要脚本。
可视化测试执行时消息和事件如何在分布式体系结构中流动。


2.测试资产和环境的更改管理
不断发展的API可以帮助组织在响应业务需求的同时保持领先于竞争对手。然而,如果自动化测试套件无法跟上不断发展的API,这种频繁的更改将带来巨大的质量风险。
快速、简单和准确地更新测试资产的系统对于使测试资产与不断变化的API保持同步至关重要。如果可以自动评估更改对现有测试的影响,然后快速更新现有测试(或创建新的测试)以响应已识别的更改影响,则可以大大减少所需的时间,以确保测试不会因预期的更改…而失败。或者忽略关键的新功能。

3.模拟测试环境的服务虚拟化
服务虚拟化技术即我们经常说的Mock,可以创建模拟测试环境,提供对依赖的系统组件行为的随时随地访问,这些依赖系统组件不可用、难以访问或难以配置用于开发或测试。“依赖组件”可能包括大型机、移动应用程序前端、数据库、web服务、第三方应用程序或其他超出团队直接控制范围的系统。服务虚拟化可以与硬件/OS虚拟化结合使用,以访问需要更早、更快或更完整地测试的环境。
在API测试的上下文中,服务虚拟化可以通过两种关键方式应用:

提供对依赖组件行为(例如,从移动应用程序、数据库、遗留系统或第三方服务)的访问,以彻底验证API。
为了模仿API的行为,创建一个API使用者可以在不影响生产环境的情况下开发和测试的测试环境,或者允许在API完成之前开始开发和测试。


4.广泛的性能测试--最好是服务虚拟化
由于api的高度暴露特性,很有可能出现不可预测和经常波动的业务量。要确定在API通常面临的需求不稳定或激增的情况下,您的API是否能够满足sla,就必须扩大性能测试的范围。您可以使用服务虚拟化(上文说过)创建模拟测试环境,帮助您针对不同的性能场景进行测试,否则在测试环境中很难创建这些场景。
例如,可以轻松地设置性能条件(例如,定时、延迟、延迟)来模拟峰值、预期性能和缓慢的性能——也许是为了帮助规划云突发,或者确定当有人从国外访问它时API可能如何响应。还可以配置各种很难在实际系统中再现或复制的错误和故障条件——例如,如果API依赖于AmazonWebServices,您可以轻松地模拟AWS宕机的场景。这种在相关系统中快速配置广泛条件的能力对于确定api在异常条件下是否提供合理的响应(或至少优雅地失败)至关重要。
采用服务虚拟化有助于性能测试的最后一种方式是:可以“虚拟化”到第三方系统的任何连接,从而可靠地消除压力测试可能影响不允许(或预算)使用测试消息的服务的风险。

5.广泛的安全性测试-最好是服务虚拟化
考虑到API增加的攻击表面积较大,一个多方面的安全测试策略对于确保开发在应用程序中构建适当级别的安全至关重要。这包括:

执行复杂的身份验证、加密和访问控制测试场景。
生成范围广泛的渗透攻击场景,包括参数模糊、注入、大有效载荷等。
针对现有功能测试方案运行渗透攻击场景。
在测试执行期间监视后端,以确定安全性是否实际受到损害。
此外,如果采用的是服务虚拟化(上文说过),则可以利用它将您的安全测试提升到下一个级别:

它提供了快速模拟攻击场景的方法,以及模拟依赖项的不同安全行为的方法。这使您可以从现有的功能测试方案中获得更多的价值(因为您可以相对于不同的安全场景运行它们,否则将很难配置,并且无法对它们进行测试)。
它允许在没有安全专家的情况下执行广泛的安全测试。现有的测试方案可以很容易地针对一组广泛的预先配置的安全场景执行。
它帮助您隔离API,并将其用于响应各种攻击场景和依赖项的不同安全行为。
这里推荐的是Eolinker的Goku网关,可以自行尝试一下。

获取各大电商平台的点击:API测试调用

API目前支持以下基本接口:

  • item_get 获得淘宝商品详情
  • item_get_pro 获得淘宝商品详情高级版
  • item_review 获得淘宝商品评论
  • item_fee 获得淘宝商品快递费用
  • item_password 获得淘口令真实url
  • item_list_updown 批量获得淘宝商品上下架时间
  • seller_info 获得淘宝店铺详情
  • item_search 按关键字搜索淘宝商品
  • item_search_tmall 按关键字搜索天猫商品
  • item_search_pro 高级关键字搜索淘宝商品
  • item_search_img 按图搜索淘宝商品(拍立淘)
  • item_search_shop 获得店铺的所有商品
  • item_search_seller 搜索店铺列表
  • item_search_guang 爱逛街
  • item_search_suggest 获得搜索词推荐
  • item_search_jupage 天天特价
  • item_search_coupon 优惠券查询
  • cat_get 获得淘宝分类详情
  • item_cat_get 获得淘宝商品类目
  • item_search_samestyle 搜索同款的商品
  • item_search_similar 搜索相似的商品
  • item_sku 获取sku详细信息
  • item_recommend 获取推荐商品列表
  • brand_cat 获取品牌分类列表
  • brand_cat_top 获取分类推荐品牌列表
  • brand_cat_list 得到指定分类的品牌列表
  • brand_keyword_list 得到指定关键词的品牌列表
  • brand_info 得到品牌相关信息
  • brand_product_list 得到指定品牌的产品
  • custom 自定义API操作
  • buyer_cart_add 添加到购物车
  • buyer_cart_remove 删除购物车商品
  • buyer_cart_clear 清空购物车
  • buyer_cart_list 获取购物车的商品列表
  • buyer_cart_order 将购物车商品保存为订单
  • buyer_order_list 获取购买到的商品订单列表
  • buyer_order_detail 获取购买到的商品订单详情
  • buyer_order_express 获取购买到的商品订单物流
  • buyer_order_message 获取购买到的订单买家留言
  • buyer_address_list 收货地址列表
  • buyer_address_clear 清除收货地址
  • buyer_address_remove 删除收货地址
  • buyer_address_modify 修改收货地址
  • buyer_address_add 添加收货地址
  • buyer_info 买家信息
  • buyer_token 买家token
  • seller_order_list 获取卖出的商品订单列表
  • seller_order_detail 获取卖出的商品订单详情
  • seller_order_close 卖家关闭一笔交易
  • seller_order_message 获取或修改卖出去的订单备注
  • seller_auction_list 商品可上下架商品列表
  • seller_auction 商品上下架
  • seller_item_add 商品上传
  • upload_img 上传图片到淘宝
  • img2text 图片识别商品接口
  • tbk_order_query 淘宝客订单查询
  • item_list_weight 批量获取商品信息
  • item_history_price 获取商品历史价格信息
  • item_get_app 获得淘宝app商品详情原数据

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

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

相关文章

OpenCV中的图像处理3.9(七)轮廓线及其层次结构

目录 3.9.4 轮廓线:更多的功能目标理论和代码练习 3.9.5 轮廓线层次结构目标理论什么是层次结构?OpenCV中的层次结构表示法轮廓线检索模式 翻译及二次校对:cvtutorials.com 编辑者:廿瓶鲸(和鲸社区Siby团队成员&#x…

Pyqt5经典案例学习

目录 前言一、图表主题动画1-1、效果展示1-2、代码分段解析1-2-1、导库1-2-2、初始化1-2-3、数据生成函数以及信号与槽的连接 总结 前言 案例来源于GitHub项目《各种各样的PyQt测试和例子》 一、图表主题动画 1-1、效果展示 功能: 支持不同的主题和动画效果。用户…

Linux环境下的VScode使用教程

前言 (1)对于学习本文需要先有自行安装好VMware,对VMware有简单的了解。 (2)对于绝大多数使用Linux的人而言,经常在Windows环境下使用source insight进行编译程序,然后利用FileZilla将Windows的…

Ansys仿真寄生参数对信号反射的影响

1、短桩线传输线的反射 短桩线在PCB走线时会经常遇到,这个桩线会对信号的传输产生反射,那么桩线的长度和信号反射的关系可以仿真看一下,电路如下图所示,下图中,我们设置信号源的上升下降时间为0.8ns,桩线的…

Auto GPT 与 ChatGPT:有何区别?

人工智能正在迅速发展,即使是最熟练的人也越来越难以跟上。每隔一段时间,就会出现新的 AI 工具,在这些工具中,有些是时尚的,有些是真正有价值的。 Auto-GPT 是一种建立在 ChatGPT 技术之上的人工智能,很可…

leaflet根据坐标点设置多边形,生成geojson文件,计算面积值(133)

第133个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中根据坐标点设置多边形,通过.toGeoJSON() 来生成geojson文件,通过turf.area来计算面积值。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共123…

浅谈Redis7基础命令

Redis基本命令 Ping命令 心跳命令 set & get命令 set key value get key select命令 切换数据库 dbsize命令 flushdb命令 清除当前数据库数据 flushell命令 清除所有数据库数据 退出命令 quit、exit 关闭redis redis-cli shutdown shutdown 查看进程及端口号 #查看…

VirtualBox ping和xshell切换

使用virtualbox有一个奇怪的现象,每次连接xshell的时候ping百度,ping不通,能ping通的时候又连接不了xsell。 两种模式来回切换每次都要查要修改的东西,太麻烦了,就在这记录一下。 连接xshell 选中想要链接xshell的虚…

python3 安装 bz2包

python3 安装 bz2包 错误解决方法1、pip 安装2、重装python3(网上推荐,但没尝试)3、补全缺少文件(博主采用) 错误 ModuleNotFoundError: No module named _bz2 解决方法 1、pip 安装 尝试 pip3 install bz2 发现并…

一篇文章搞定《Android中的ANR》

------《ANR》 什么是ANR举个例子帮你认识ANRANR的产生原因ANR的监控手段方法一: 监控trace文件夹方法二:利用我们主线程的Looper方法三:监控SIGQUIT信号 ANR日志Traces.txtTraces文件分析几个分析案例:一、好定位的问题(简单案例…

使用FastGithub解决国内访问GitHub失败的问题

问题提出 在ArduinoIDE安装开发板开发包、库时经常由于这些包和库的索引指向的是github下面的开源项目,所以安装失败的可能性极高。开启了FastGithub后,更新成功率和速度都快了很多! 问题解决 使用FastGithub开源工具(支持Win,Ma…

在北京,36岁的软件测试人的心路历程及学习经验,太现实了

前言 涛哥(我认识的一位朋友,也是我的前辈)出身普通,仅仅是一个普通二本学校毕业,大学也是混日子混过去的,年轻时没有好好学习,被美女、游戏吸引到迷了自我,他对那年毕业的记忆清晰…

jpa使用

jpa: java persistence api jpa只要一对多 在一对多的关系中,一般将 JoinColumn 放在 多端,, 如果不需要两边都映射对应的实体,,可以在一端设置JoinColumn ,并在多端指定一个外键属性来映射这个关系

农业病虫虚拟仿真教学平台使实验资源共享

动物直肠检查是一项常见的内窥镜检查手术,往往会因为实验设备、实验动物、时间、经费等方面的因素影响,使一些应该开设的手术教学开展较少或者无法进行,造成学生或从业人士对专业知识掌握以及动手实践能力的不足 因此对于新手的培训必须经过大…

MISC:HTTP 流量分析技术.

MISC:HTTP 流量分析技术. Misc即杂项,是信息隐藏又称信息伪装,就是通过减少载体的某种冗余,如空间冗余、数据冗余等,来隐藏敏感信息,达到某种特殊的目的。 信息隐藏打破了传统密码学的思维范畴&#xff0c…

短期光伏发电量短期预测(Python代码,主要模型LSTM)

1.数据集(68779条数据) 开始时间 DATE_TIMEPLANT_IDSOURCE_KEYDC_POWERAC_POWERDAILY_YIELDTOTAL_YIELD15-05-2020 00:0041350011BY6WEcLGh8j5v7000625955915-05-2020 00:0041350011IF53ai7Xc0U56Y000618364515-05-2020 00:0041350013PZuoBAID5Wc2HD00…

你真的会写接口自动化测试脚本?0-1精通自动化测试实战,暴涨18K...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 开头,…

【Linux进阶命令 01】grep(文本的全局搜索与打印)

文章目录 一、grep命令(全局搜索与打印)1.1 语法1.2 主要参数1.3 测试准备1.4 grep命令使用示例1.5 应用示例 一、grep命令(全局搜索与打印) grep (缩写来自Globally search a Regular Expression and Print&#xff0…

一文解决eBpf在Android上的集成和调试

eBPF(Extended Berkeley Packet Filter )是一种新兴的linux内核功能扩展技术,可以无需修改内核代码,在保证安全的前提下,灵活的动态加载程序,实现对内核功能的扩展。 Android平台上也引入了对eBpf技术的支…

NC 人力薪酬管理薪资发放流程粗略整理

NC 人力薪酬管理薪资发放流程: 1、【公共薪资项目-集团/组织】节点新增公共新增项目 2、【薪资期间-集团/组织】节点设置薪资期间 3、根据公司实际情况,如果需要,则在【薪资标准设置-集团/组织】、【薪资规则-集团/组织】两个节点设置薪资标准和薪资规则 4、在【税率表-集…