API接口是什么?API接口常见的安全问题与安全措施有哪些?
bigegpt 2024-10-14 08:22 7 浏览
前言:如今具有开放式的业务体系结构将是下一代网络的重要特征之一。其中,关键的技术之一就是网络控制与应用层之间的应用程序接口(API)。面对API接口的安全问题,我们可以采取几种安全措施。
近日,网络安全研究人员发现一组异常的移动应用程序,这些应用程序向民众公开了 Twitter API 密钥。据统计,此类应用程序多达3200个。
网络安全公司CloudSEK首次发现了这一问题,该公司在检查大型应用程序集合是否存在数据泄漏时,发现了大量应用程序泄露了Twitter API密钥。
据悉,造成这一现象的主要原因是开发者在整合移动应用与Twitter 时,会得到一个特殊的认证密钥,允许其移动应用与 Twitter API交互。当用户使其 Twitter账户与移动应用联系起来时,这些密钥允许其他人代表用户行事,例如通过 Twitter 登录,创建推文,发送 DM 等。
当攻击者设法得到这些密钥后,就能够以关联的 Twitter 用户身份进行操作,建议大家不要将密钥直接存储在移动应用中,避免攻击者找到并利用它们。CloudSEK 强调,API 密钥泄漏一般是应用程序开发人员造成的,他们在开发过程中将认证密钥嵌入到Twitter API 中,但是之后并未删除。
那么API到底是一种什么技术呢?
如今具有开放式的业务体系结构将是下一代网络的重要特征之一。其中,关键的技术之一就是网络控制与应用层之间的应用程序接口(API)。通过应用程序接口,业务开发商 、独立软件提供商 (ISV)等第三方应用可以获得使用现有网络资源的能力 ,从而方便 、灵活地为客户提供所需的业务。API接口已经深入应用到各个网页与APP中。
API其实就是应用程序接口(Application Programming Interface)的简称。API 是一些功能、定义或者协议的集合,提供应用程序或者程序开发人员基于软件访问一组例程的能力,对外封装完善,调用时无需学习 API内部源码,依据 API文档功能说明书来使用即可。
API接口的数据格式有哪些?
目前 API 接口支持 XLSX、JSON、XML、CSV、RDF 等数据格式,其中 JSON 和 XML 是主流的数据格式,几乎所有 API 接口都支持这两种数据格式。
JSON (JavaScript Object Notation)是一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性,可在不同平台之间进行数据交换。
XML 是扩展标记语言(Extensible Markup Language),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
JSON与XML相比,两者各有不同的特点。
JSON与XML 相比是一种更加轻量级的数据格式,而且更加易于解析,支持多种语言,这使得 JSON 在大数据时代备受欢迎,而且随着应用程序和平台的不断发展,应用程序的功能变得越来越复杂,但为了保证用户体验的优化,需要通过重构代码,将复杂的逻辑封装在内部,保持其对外提供的 API 仍然简洁。JSON 也正因为简洁这一优势逐渐超越了XML,成为了应用间的首选数据交换格式。
API接口的安全问题
如今API接口的运用已经十分广泛,API 接口如果没有经过安全处理,则很容易出现三类安全问题:信息截获、篡改与泄露。Twitter API 密钥泄露事件就是如此,所以API 接口的安全问题不容小觑。
面对API接口的安全问题,我们可以采取以下安全措施:
一、非对称加密
非对称加密是加密算法中的一种,和对称加密算法只有一个密钥文件不同的是,非对称加密有两个密钥文件,也就是公钥与私钥。顾名思义,公钥是对外公开状态,而私钥则是属于保密状态,如果黑客只有公钥而没有私钥,及时截取到报文也没有任何影响。在1978年,Ron Rivest、Adi Shamir、Leonard Adleman 三人共同提出了RSA非对称加密技术,该技术的名字便是取自于这三人的首字母。以现在的情况来看,RSA 非对称加密技术属于最有影响力的加密算法,因为该技术能够抵御已知大多数的密码攻击,所以被推荐为加密数据的标准。
开放API 平台在应用非对称加密后,公钥公开给那些需要对接 API 的人,这些对接 API 的人然后通过公钥将用户的相关数据进行加密和传输。如果想要对其解密,那么就必须要用 API 平台的私钥,这个过程中,即便有黑客利用抓包工具将报文截取、即便是报文相关数据被泄露出去,对方没有私钥来解密,那么就算有报文数据也没有任何意义。因此,为了防止用户的一些敏感信息被泄露,便可以将非对称加密应用其中,能够很好地解决问题。
非对称加密流程:
如果在有条件的情况下,API接口则是可以使用 HTTPS 协议来将数据进行传输,因为相比于RSA 加密技术,HTTPS 的传输更为安全。
HTTPS 解决传输数据安全问题的方式是对双方身份进行确定,从而在两者之间建立其安全通道,而且 HTTPS 协议相比于 RSA 非对称加密技术要更为完善,后者所具备的技术,前者都能够实现,并且前者还应用到了对称加密。
不过该项技术也有着一定的不足,主要包括需要购买证书、服务器开销大、维护成本高、性能较低等,所以在考虑成本的情况下,HTTPS 不是最优选,而 RSA 加密算法是最适宜的选择。
二、信息摘要算法5(MD5)
信息摘要算法5也叫MD5全称为Message-Digest Algorithm 5。最大的特点就是其算法不可逆,主要方法是对任意一段字符串生成摘要。所以,信息摘要算法5大多时候是被用来存储用户的登录密码,并且还能够用来比对信息是否一致。信息摘要算法5在目前是不会被真正破解的,所谓的破解方法也只不过是利用非常庞大的一个数据量来对其进行碰撞,简单一点说,就是一个拥有着巨大数据的彩虹表中存了许多与信息摘要算法 5字符串相对应的字符串,因此在破解信息摘要算法5时,需要在这个基础数据非常庞大的表里检索加密好的信息摘要算法5字符串,检索的时间是与该表中的数据成正比的,因此检索所需要的时间会非常漫长,就算是通过反推法来破解信息摘要算法5的密码,那也要耗费大量的精力与时间,所以信息摘要算法5算是比较安全的加密算法。
信息摘要算法如何保护API接口?
一般情况下,API设计者首先需要在对外接口文档中约定好信息摘要算法5的加密字段和顺序,在对API接口进行调用时,则需要通过文档中API设计者所约定好的顺序来对信息摘要算法5进行加密,而且为了能够保证对比有意义,API后台也需要根据约定的顺序进行加密。
在对比时,如果发现接收到的信息摘要算法5摘要和获取参数所生成的信息摘要算法5摘要不一致,如果不是在调用API接口时出现操作错误,那么便能够确定与之相关的数据已经处于篡改状态,因此便需要拒绝处理这批数据。
相反的,如果所接收到的信息摘要算法5摘要和获取参数生成的信息摘要算法5摘要一致,那么便能够确认数据并未被篡改。举个例子,某公司在调用API接口时,需要按照公司的要求传入产品编码、购买数量以及信息摘要算法5摘要3个参数。公司在接到传来的相关参数之和,需要通过同样的方法来进行信息摘要算法5,之后对两者之间的摘要文件进行比对,不对等则表示有篡改风险,需要放弃该接口请求。
三、令牌鉴权
公网暴露API接口之后,便相当于豪宅的大门被敞开了一般,任何人都能够自由出入,这也就使得豪宅内的财产变得非常不安全,因此就需要有安保人员来查看进出人员的通行证,令牌便可以理解为该通行证,只有获得了令牌的人才能够进出,而没有令牌的人则严禁入内,一律拦截在大门外。
令牌鉴权机制其实就是放API接口服务器会用户在登录之后生成一组不重复的字符,从而形成登录人的令牌,令牌作为KET在REDIS缓存放置在服务器。而 VALUE 则存放登录用户的基本信息,同时对token失效时间进行设置。
令牌鉴权校验则更为快速有效,在调用开放API时需要携带令牌,而服务器来对令牌进行校验,包括存在与否、过期与否等,如果令牌过期或者不存在,则直接返回异常信息,强制客户重新登录获取新令牌。
数据安全是一场攻防持久战,需要不断对其进行改进与完善,才能够有效保障客户权益与数据安全。如果等到数据泄露事件发生,再去应急的话,就已经错过了最好的时机。
相关推荐
- 得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践
-
一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...
- warm-flow新春版:网关直连和流程图重构
-
本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...
- 扣子空间体验报告
-
在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...
- spider-flow:开源的可视化方式定义爬虫方案
-
spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...
- solon-flow 你好世界!
-
solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...
- 新一代开源爬虫平台:SpiderFlow
-
SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...
- 通过 SQL 训练机器学习模型的引擎
-
关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...
- 鼠须管输入法rime for Mac
-
鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...
- Go语言 1.20 版本正式发布:新版详细介绍
-
Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...
- iOS 10平台SpriteKit新特性之Tile Maps(上)
-
简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...
- 程序员简历例句—范例Java、Python、C++模板
-
个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...
- Telerik UI for iOS Q3 2015正式发布
-
近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...
- ios使用ijkplayer+nginx进行视频直播
-
上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...
- IOS技术分享|iOS快速生成开发文档(一)
-
前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...
- macOS下配置VS Code C++开发环境
-
本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- httperror403.14-forbidden (63)
- logstashinput (65)
- hadoop端口 (65)
- dockernetworkconnect (63)
- esxi7 (63)
- vue阻止冒泡 (67)
- c#for循环 (63)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- java大写转小写 (63)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)