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

news2024/11/28 13:55:05

文章目录

  • 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.coloradmin.cn/o/2062483.html

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

相关文章

【PyTorch】神经网络的基本骨架-nn.Module的使用以及convolution-layers卷积层介绍

前提文章目录 【PyTorch】深度学习PyTorch环境配置及安装【详细清晰】 【PyTorch】深度学习PyTorch加载数据 【PyTorch】关于Tensorboard的简单使用 【PyTorch】关于Transforms的简单使用 【PyTorch】关于torchvision中的数据集以及dataloader的使用 文章目录 前提文章目录nn.…

从易车“超级818冠军之夜” 看如何借势体育营销点燃汽车消费热潮

编辑 | 魏力 发布 | 大力财经 导语:这个8月,是属于奥运的8月。 巴黎奥运会虽圆满落幕,但属于奥运健儿们的热度还在持续。在这股奥运热潮的带动下,全民运动热情持续释放,同时也激发出巨大的消费潜力。 赛场外&#…

Go 1.23中值得关注的几个变化

距离上一次Go 1.22版本发布[1]又过去六个月了,我们如期迎来了Go 1.23版本的发布](https://mp.weixin.qq.com/s/IpDUOe0AUDKW2PYCWmvLYw)。 对于Go项目乃至整个Go社区而言,这个版本还有一点额外的意义,那就是这是Russ Cox[2]作为Tech lead&…

nginx 日志格式化,每日分割文件(已亲测)

首先nginx版本是1.23.4,在安装目录的conf文件夹下,配置nginx.conf。配置如下: logformat 代表日志格式设置 frmain 代表日志配置别名 map 行代表设置每日切割文件格式 需要在配置文件location指定访问的路径下,配置日志输出路径…

AI自动生成PPT怎么用?5大AI生成PPT技巧教会你

处暑悄然而至,标志着炎热夏季的逐渐远去,自然界的万物开始步入收获与沉淀的季节。值此节气更迭之际,何不借助现代科技的力量,用一份精美的PPT来宣传处暑的独特魅力? 无需繁琐制作,AI生成PPT免费工具就能助…

C学习(数据结构)-->实现链式结构二叉树

目录 一、链式二叉树结构 二、实现 1、申请新结点 2、前、中、后序遍历 1)前序遍历 例: 2)中序遍历 3)后序遍历 3、结点个数 1)二叉树结点个数 例:​编辑 2)二叉树叶子结点个数 3&…

C++入门基础知识27

成长路上不孤单😊【14后小学生一枚,C爱好者,持续分享所学,如有需要欢迎收藏转发😊😊😊😊😊😊😊(!!&#xff01…

工厂老板、设计师怎么选通风采光天窗?重点关注哪些方面?

选通风采光天窗首先看预算与通风采光需求,然后看品牌和售后,选购过程中重点关注天窗的型号、规格尺寸、材料配置、外观造型及颜色。一、预算与通风采光需求 通风采光天窗已成为厂房建筑上必备的屋顶设备,现目前天窗的型号多样,价位…

原神4.8版本重点培养和抽到角色数据表:修改了添加倒计时.隐藏了抽到角色数据表删除按钮、备注列和选择列

<!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原神4.8版本抽到角色和重点培养数据表</title…

七牛云 CDN 视频瘦身,为视频分发「减负增效」

随着智能设备的普及&#xff0c;以及各种以分享视频为主的平台的兴起&#xff0c;人们记录生活、分享故事的方式不再局限于文字和图片&#xff0c;而是越来越多地通过视频来表达。视频也不再需要复杂的制作过程&#xff0c;变得随手可得。 然而&#xff0c;视频在互联网上的爆炸…

mac os 外接设备使用win习惯快捷键

目录 1. 简单映射版本&#xff08;常用快捷键&#xff09;2. 如果想追求完全的win匹配3. 关于外接鼠标滚动设置 1. 简单映射版本&#xff08;常用快捷键&#xff09; 就把ctrl和Command键互换一下就行 点击设置-键盘-键盘快捷键 然后在修饰键中&#xff0c;将control和comm…

怎么恢复电脑删除的文件?全面指南助你找回宝贵数据

在数字化时代&#xff0c;电脑中的文件承载着我们的工作成果、学习资料、珍贵照片以及无数回忆。然而&#xff0c;不小心删除重要文件的情况时有发生&#xff0c;让人心急如焚。别担心&#xff0c;本文将为你提供一份全面的指南&#xff0c;教你如何恢复电脑中删除的文件&#…

虚幻5|AI视力系统,听力系统,预测系统(2)听力系统

虚幻5|AI视力系统&#xff0c;听力系统&#xff0c;预测系统&#xff08;1&#xff09;视力系统-CSDN博客 一&#xff0c;把之前的听力系统&#xff0c;折叠成函数&#xff0c;复制粘贴一份改名为听力系统 1.小个体修改如下&#xff0c;把之前的视力系统改成听力系统 2.整体修…

Java—Lambda表达式

注意&#xff1a;如果无法判断一个方法是否为函数式接口&#xff0c;可以查看该方法的源码中是否携带FunctionalInterface注解。 lambda表达式再简化写法规则如下。 1. 参数类型可以省略不写 2. 如果只有一个参数&#xff0c;参数的 "( )" 也可以省略。 3. 如果Lambd…

使用Java和XPath在XML文档中精准定位数据

在当今数据驱动的世界中&#xff0c;能够从复杂的文档结构中准确地提取信息是一项极具价值的技能。XML文档因其结构化和可扩展性广泛用于各种应用中&#xff0c;而XPath则是一种强大而灵活的语言&#xff0c;专门用于在这些文档中进行导航和数据提取。本篇文章将带您深入了解如…

Android Studio 动态表格显示效果

最终效果 一、先定义明细的样式 table_row.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_h…

【YOLO家族】Scaled-YOLOv4, Optimal Speed and Accuracy of Object Detection,CVPR 2021

资源 论文题目《YOLOv4: Optimal Speed and Accuracy of Object Detection》 论文地址&#xff1a;https://arxiv.org/abs/2004.10934 论文代码&#xff1a;https://github.com/AlexeyAB/darknet 作者&#xff1a;AlexeyAB 论文链接&#xff1a;https://arxiv.org/pdf/2004.10…

通过Spring Boot创建项目

目录 引言 一、创建新项目 二、通过spring boot创建顾客查询的项目 1.实体类: 2.mapper接口 3.service服务层接口 4.service服务层接口实现类 5.mapper映射文件 三、可能遇到的问题 引言 在通过之前ssm框架的学习后&#xff0c;你是否会感觉ssm的配置过多&#xff0c…

Github文件夹重命名|编程tips·24-08-22

小罗碎碎念 这篇推文来解决一个问题&#xff0c;**我上传代码带Github以后&#xff0c;想要修改文件夹的名称怎么办&#xff1f;**例如&#xff0c;我要将文件夹24-08-22修改为联接散点图&#xff5c;24-08-22&#xff0c;可以遵循以下操作。 一、配置SSH 先登录github&#x…

【PyTorch】关于torchvision中的数据集以及dataloader的使用

前提文章目录 【PyTorch】深度学习PyTorch环境配置及安装【详细清晰】 【PyTorch】深度学习PyTorch加载数据 【PyTorch】关于Tensorboard的简单使用 【PyTorch】关于Transforms的简单使用 文章目录 前提文章目录数据集简介程序中下载数据集读取数据集结合transform进行读取数据…