导语:如今具有开放式的业务体系结构将是下一代网络的重要特征之一。其中,关键的技术之一就是网络控制与应用层之间的应用程序接口(API)。面对API接口的安全问题,我们可以采取几种安全措施。
前言:如今具有开放式的业务体系结构将是下一代网络的重要特征之一。其中,关键的技术之一就是网络控制与应用层之间的应用程序接口(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时需要携带令牌,而服务器来对令牌进行校验,包括存在与否、过期与否等,如果令牌过期或者不存在,则直接返回异常信息,强制客户重新登录获取新令牌。
数据安全是一场攻防持久战,需要不断对其进行改进与完善,才能够有效保障客户权益与数据安全。如果等到数据泄露事件发生,再去应急的话,就已经错过了最好的时机。
如若转载,请注明原文地址