当前位置: 首页 > news >正文

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世界。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 企业高性能web服务器【Nginx详解】
  • jmeter简单发送接口
  • 龙门吊(天车)防撞方案
  • HarmonyOS开发实战:应用权限/通知设置跳转方案
  • ZooKeeper入门及核心知识点整理
  • 在Windows Server上安装typecho博客程序(基于IIS)
  • [CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 语言模型篇(4)
  • 阿里云ubuntu系统安装jdk + tomcat
  • 初识C++以及安装C++学习工具
  • VirtualBox和VMware的虚拟机ip配置为同一网段不使用wlan的网卡(vulnhub打靶前期准备)
  • Chainlit接入DifyAI知识库接口快速实现自定义用户聊天界面
  • AI自动生成PPT怎么用?5大AI生成PPT技巧教会你
  • 基本数据类型 --- 浮点型
  • 面试中被问到各个测试阶段的具体工作,如何详细描述
  • 代码随想录训练营day42|动态规划part9
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Docker下部署自己的LNMP工作环境
  • Fabric架构演变之路
  • JS实现简单的MVC模式开发小游戏
  • js正则,这点儿就够用了
  • Mysql数据库的条件查询语句
  • 闭包,sync使用细节
  • 对象管理器(defineProperty)学习笔记
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • ------- 计算机网络基础
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 目录与文件属性:编写ls
  • 那些被忽略的 JavaScript 数组方法细节
  • 区块链分支循环
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​MySQL主从复制一致性检测
  • #13 yum、编译安装与sed命令的使用
  • (二)c52学习之旅-简单了解单片机
  • (回溯) LeetCode 78. 子集
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net6+aspose.words导出word并转pdf
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @取消转义
  • [2010-8-30]
  • [Android] Android ActivityManager
  • [BetterExplained]书写是为了更好的思考(转载)
  • [C#]C#学习笔记-CIL和动态程序集
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强
  • [C++] C++11详解 (一)
  • [C++]spdlog学习
  • [caffe(二)]Python加载训练caffe模型并进行测试1
  • [Codeforces] number theory (R1600) Part.11
  • [emuch.net]MatrixComputations(7-12)
  • [github全教程]github版本控制最全教学------- 大厂找工作面试必备!
  • [Jsprit]Jsprit学习笔记-一个简单的示例