API接口安全101:基础概念与最佳实践

文章目录

  • API
      • 定义
      • 协议
      • 架构风格
      • 描述语言
  • Webservice
      • wsdl
          • 介绍
          • 复现
  • SOAP
      • swagger
          • 介绍
          • 指纹查找
          • 利用
          • 存在目录
          • 复现
  • HTTP
      • Webpack
          • 介绍
          • 复现

在当今数字化时代,API接口已成为现代软件架构中不可或缺的组成部分。它们连接着各种应用程序和服务,促进了数据交换和功能集成。然而,随着API的普及,其安全性也成为了一个日益突出的问题。本文将深入探讨API接口安全的重要性,介绍常见的安全威胁以及防护措施,并通过实际案例展示如何识别和修复API安全漏洞。

API

  1. 定义

    1. 通常在网站的通讯中,很多会调用api接口去方便更多信息的管理与调用,但是当使用某些api时,在开发人员未对api接口做出访问策略限制或其他的加固,会导致其他的用户发现api的时候可能会从中获取到敏感信息泄露,或者其他的sql注入等等安全问题
  2. 协议

    SOAP (Simple Object Access Protocol):

    • XML基于的数据交换协议
    • 通常使用HTTP传输
    • SOAP = HTTP + XML
  3. 架构风格

    REST (Representational State Transfer):

    • Web服务的设计风格,不是协议
    • 简洁,越来越流行
    • 使用标准HTTP方法(GET, POST等)
  4. 描述语言

    WSDL (Web Services Description Language):

    • XML基于的Web服务描述语言
    • 描述Web服务的公共接口
    • 常与SOAP一起使用

Webservice

wsdl

  1. 介绍
    1. WSDL是一个用于精确描述Web服务的文档,WSDL文档是一个遵循WSDL-XML模式的XML文档。WSDL 文档将Web服务定义为服务访问点或端口的集合。在 WSDL 中,由于服务访问点和消息的抽象定义已从具体的服务部署或数据格式绑定中分离出来,因此可以对抽象定义进行再次使用。消息,指对交换数据的抽象描述;而端口类型,指操作的抽象集合。用于特定端口类型的具体协议和数据格式规范构成了可以再次使用的绑定。将Web访问地址与可再次使用的绑定相关联,可以定义一个端口,而端口的集合则定义为服务。
      一个WSDL文档通常包含8个重要的元素,即definitions、types、import、message、portType、operation、binding、service元素。这些元素嵌套在definitions元素中,definitions是WSDL文档的根元素。
    2. image
  2. 复现
    1. 指纹查找edu.cn inurl:asmx?wsdl

    2. 找到如下地址

      1. image

      2. image

    3. 直接使用soapui工具来分析情况

      1. image

      2. image

    4. api太多了,需要借助一些自动化扫描工具[readyAPI]

      1. 该软件暂未发现破解版,首页如下

        1. image
      2. imageimage

      3. image

    5. 测试结果

      1. image
      2. image

SOAP

swagger

  1. 介绍
    1. Swagger是一个开源的API文档和设计工具集,它提供了一种标准化的方法来描述、生成、可视化和测试RESTful Web服务。Swagger允许开发者以易读易用的JSON或YAML格式定义API接口,自动生成交互式API文档,并提供了API客户端SDK生成和服务器存根代码生成的功能,大大简化了API的开发、文档编写和测试过程。
  2. 指纹查找
    1. "Swagger" && title=="Swagger UI"
  3. 利用
    1. Soapui&exp

      1. exp

        1. lijiejie/swagger-exp: A Swagger API Exploit (github.com)
        2. jayus0821/swagger-hack: 自动化爬取并自动测试所有swagger接口 (github.com)
        3. swagger-exp-knife4j.py
  4. 存在目录
    1.   /swagger/api/swagger /swagger/ui /api/swagger/ui /swagger-ui.html /api/swagger-ui.html....
      
  5. 复现
    1. fofa搜索指纹

    2. 利用soapui工具来分析接口

      1. 首先先找到对应的api文档的网址,在soapui中导入即可

        1. image
        2. image
    3. 利用swagger-exp-knife4j.py来分析api接口

      1. 使用命令python swagger-exp-knife4j.py -u http://13.214.16.152/activity/v3/api-docs,自动弹出游览器来分析数据包

        1. image
    4. 利用swagger-hack2.0脚本自动化扫描结果

      1. 原版的脚本会出现list indices must be integers or slices, not str报错,所以我用ai进行改版了

        1. 脚本:swagger-hack2.0.py
      2. python swagger-hack2.0.py -u http://13.214.16.152/activity/v3/api-docs

      3. image

      4. image

HTTP

Webpack

  1. 介绍
    1. Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。当 Webpack 处理应用程序时,它会在内部构建一个依赖图,映射项目所需的每个模块并生成一个或多个 bundle。Webpack 的主要功能包括模块打包、代码分割、文件优化、开发服务器等,它能够将各种资源(如 JavaScript、CSS、图片等)视为模块来处理,大大简化了前端开发的复杂度和提高了开发效率。
  2. 复现
    1. 利用:PackFuzzer

    2. 使用packerfuzzer工具,python PackerFuzzer.py -u https://www.huaxin-ts.com/

      1. image

      2. 结果在\reports文件夹当中

        1. image
          API接口安全是一个持续evolving的领域,需要开发者和安全专家保持警惕并不断更新知识和技能。通过本文的介绍和实战演示,我们希望读者能够更好地理解API安全的重要性,掌握基本的安全实践,并在日常工作中将这些知识付诸实践。记住,保护API安全不仅是技术问题,更是一种责任 - 它关乎用户隐私、数据完整性和整个数字生态系统的健康发展。让我们共同努力,构建一个更安全、更可靠的API世界。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能NLP--特征提取之词嵌入(Word Embedding)

一、前言 在上篇文章中,笔者详细讲解介绍了人工智能自然语言处理特征提取中的TD-IDF型文本处理方法,那么接下来,笔者将为大家揭晓,目前阶段,在特征提取,也就是文本数据转成数字数据领域内最常用也是最好用…

在MAVEN中版本依赖有冲突改怎么处理

1.为什么会出现版本依赖的冲突 如果存在版本冲突,通常可能会引发的报错是ClassNotFoundException、NoSuchMethodError等错误。Maven依赖版本冲突通常是由于间接依赖导致同一个jar包存在多个不同版本。例如,如果B依赖了A的1.0版本,而C依赖了A…

网络安全之xss靶场练习

目录 一、xss靶场练习 1、Ma Spaghet! 2、Jefff 第一个方法 第二个方法 3、Ugandan Knuckles 4、Ricardo Milos 5、Ah Thats Hawt 6、Ligma 7、Mafia​编辑 8、Ok, Boomer 一、xss靶场练习 靶场地址 https://xss.pwnfunction.com/ 页面显示如下 1、Ma Spaghet! 分析…

Python之字符串练习题(下)

21.nameStr“Albert Einstein",如何使用字符串运算符“:”来提取 nameStr 中的名和姓? mingnameStr[:6] xingnameStr[7:]23.下面哪些语句在运行时不会出错? (a)var xyz ’ * 10.5 (b)var ‘xyz’ * ‘5 ©var‘’xyz’*5 (d)var‘xyz’*5.0 重复运算符…

Flutter Web 正式官宣弃用 HTML renderer , Canvas 路线成为唯一

Flutter Web 团队计划在 2025 年的第一个 Flutter stable 版本中弃用 HTML renderer,当然在 master 和 beta 中会更早合并这一更改。 关于这个话题,其实在年初的我就曾发布过 《Flutter 即将放弃 Html renderer 》, Html renderer 从 2018 年…

Redis远程字典服务器(7)—— set类型详解

目录 一,基本情况 二,常用命令 2.1 sadd 2.2 smembers,sismember 2.3 spop,srandmember 2.3 smove,srem 2.4 sinter,sinterstore求交集 2.5 sunion,sunionstore求并集 2.6 sdiff&#…

MySQ分库分表与MyCat安装配置

目录 介绍 拆分策略 垂直拆分 1. 垂直分库 2. 垂直分表 水平拆分 1. 水平分库‘ 2. 水平分表 实现技术 MyCat概述 安装 概念介绍 MyCat入门 需求 环境准备 分片配置 启动服务 连接测试 执行SQL语句测试 MyCat配置 1. schema.xml 1. schema标签 2. dat…

python | 图片转换为 pdf 实现方法

目录 一、PIL 库简介及安装使用方法 (一)python 不同版本下 PIL 的使用方法 二、图片转换为 pdf 的两种实现方法 (一)简易版——pdf 页面尺寸跟随图片大小 (二)常用版——pdf 每页尺寸统一为 A4 一、P…

C++,std::bind 详解

文章目录 1. 概述2. 基本用法2.1 使用占位符2.2 示例 3. 总结 1. 概述 std::bind 是 C11 引入的一个功能,它允许你将函数(或成员函数、函数对象)与其参数绑定,生成一个新的可调用对象。这个功能在需要将函数及其参数一起传递给其…

闲鱼IP属地地址:去外地会自动变化吗?解析实时更新机制

在数字化时代,网络交易平台如闲鱼已成为我们日常生活中不可或缺的一部分。在进行二手交易时,了解对方的地理位置信息成为许多买家和卖家的关切点。那么,去外地闲鱼IP会变吗?闲鱼IP属地地址是实时更新吗?本文将深入探讨…

基于百度智能云爆破验证码识别

目录 基于百度智能云爆破验证码识别 一、基于php提供验证码校验接口 二、基于百度云API识别验证码 1、领取资源,创建应用 2、利用应用的API Key和Secret Key获取Access Token 3、文字识别 4、编写爆破程序 基于百度智能云爆破验证码识别 一、基于php提供验证…

华为手机换ip地址怎么换?手机换ip地址有什么影响

在数字化时代,网络已成为我们生活中不可或缺的一部分。无论是日常沟通、工作学习还是娱乐休闲,我们都离不开互联网。然而,随着网络安全问题的日益突出,如何保护个人隐私和信息安全成为了用户关注的焦点。更换手机IP地址作为提升网…

2024年下半年,单独划定的地区报名软考的温馨提示

软考分数线分为全国分数线、省分数线(陕西省下半年已取消,仅剩青海省)、以及单独划线地区分数线。目前各地2024年下半年软考正在接受报名,请单独划线地区的考生注意——有些地区可能要求考生在考试后进行单独划线申请,…

删除或丢失的移动硬盘数据如何恢复?三种办法助你找回宝贵资料

在数字化时代,移动硬盘已成为我们存储重要数据不可或缺的工具。然而,数据丢失或误删除的情况时有发生,让人倍感焦虑。别担心,本文将为你详细介绍如何恢复删除或丢失的移动硬盘数据,帮助你找回那些宝贵的资料。 一、检…

『 C++ 』IO流

文章目录 IO流概述iostream 的标准对象C流和C标准库I/O函数的同步 sync_with_stdiofstream 文件流文件流的打开标志二进制读写二进制读写的浅拷贝问题文本读写 字符串流注意 IO流概述 流是指数据的有序传输序列,路表示数据从一个地方流向另一个地方的过程,流可以是输入流也可以…

用Python在Ashare获取金融数据官方文档解读

Ashare,也被写作AKShare,是一个基于Python的开源完全免费的财经数据接口库。它的主要目的是为用户提供股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据的采集、清洗和落地的一整套工具。AKSha…

算法的学习笔记—把二叉树打印成多行(牛客JZ78)

😀前言 在算法面试中,二叉树的层序遍历是一个经典的题目。而这道题的要求是进一步将二叉树的每一层结点值打印成多行,即同一层结点从左至右输出,最终结果存放到一个二维数组中返回。接下来,我们将通过代码实例详细解析…

什么是光伏气象站—光伏气象站的简述

随着全球对可再生能源需求的日益增长,光伏发电作为清洁、可再生的能源形式,正逐步成为能源结构转型的重要力量。然而,光伏电站的发电效率受到多种气象因素的影响,如太阳辐射强度、温度、风速、湿度等。为了最大化光伏系统的发电潜…

C/C++ 多线程[1]---线程创建+线程释放+实例

文章目录 前言1. 多线程创建2. 多线程释放3. 实例总结 前言 说来惭愧,写了很久的代码,一个单线程通全部。可能是接触的项目少吧,很多多线程的概念其实都知道,但是实战并没有用上。前段时间给公司软件做一个进度条,涉及…

Java 2.4 - JVM

一、Java 内存区域详解(重点) 本篇讨论的是 HotSpot 虚拟机 相比于 C 而言,程序员不需要对每个 new 操作都写对应的 delete / free 操作,这些操作我们会交给虚拟机去做。因此,如果不了解虚拟机的原理,一旦…