【51CTO.com快译】如今,应用程序编程接口(API)已经变得非常流行了。各个企业的应用开发都深度依赖于它们之间的相互调用,以支持新产品和服务的按时交付。与此同时,随着API绝对数量的增加,在互联网络上传递的数据量也正在呈指数级地增长。
不过,这些海量数据中,往往会包括诸如:用户详细信息、电子邮件、以及密码等敏感且隐私的数据。例如:通过使用Facebook的某些API(请参见:https://developers.facebook.com/docs/graph-api/),您完全可以访问到大量用户的照片、位置之类详细的信息。由于网络世界用户之间的不可见性,这些敏感数据很有可能会被非法分子用于多种恶意的用途。因此,我们在日常的应用开发过程中,应当时刻专注API的安全性,通过安全编码等技术手段,构建出安全可靠的程序API。
API安全性日益受到关注
根据SmartBear最近进行的一项研究显示(该研究发布了API现状报告,请参见:
https://smartbear.com/resources/ebooks/the-state-of-api-2019-report/):
- 在受访并给予回应的对象中,有41.2%的人认为:安全性是他们的API所面对的最大技术问题,而且是当务之急。他们希望在自己的软件产品中不要出现与API安全性相关的漏洞。
- 在被普遍认为需要改善和提高的API相关领域,安全性排名第四。
- 有超过40%的API提供者会使用某种工具,来获悉当前API的安全态势。他们希望能够快速且全面地发现潜在的安全漏洞。
目前,API技术已经渗透到了各个行业,乃至各种业务策略的制定环节。其中,最为常见的API当属REST、SOAP、以及ASYNC API。另外,随着物联网的迅速发展,全新的智能化API也在不断地涌现。这些API充当了智能设备和互联网之间的接口作用。那么,到底API是如何做业务趋势以及深度融合发挥作用的呢?通过如下三个方面,我们可窥一斑:
- 为了让客户获得更好的服务体验,银行机构正在采用、甚至迁移到API式的敏捷模型中,以实现高效、强适应性的金融安全架构。
- 医疗保健行业的从业人员通过各种可用的API,向患者和客户提供集成化的医疗保健服务,并能提高自身产品的互操作性。
- 零售商正在使用API为其客户提供更加智能化的电子商务平台,例如:多元化的移动支付应用等。
API安全性的当前状态
当前,在互联网上,每天通过各种API传输的大量数据可谓是鱼龙混杂。有的是一些公众性的普通数据,有的则是需要通过加密的机密性数据。因此,应用开发与维护人员需要和那些看不见的隐形对手进行攻防较量,以确保提前揪出软件产品中的各种漏洞。总的说来,API的安全性隐患主要集中在如下三个方面:
- 授权、认证与审核机制(一般通过访问控制来应对)。
- 访问量的负载平衡和速率限制。
- 通信和网络中的数据隐私问题(一般通过SSL/TLS来应对)。
API的安全展望
根据本人的开发与项目实施经验,我大胆地对API的安全性趋势做出了如下展望,可供您参考与借鉴。
1. DNS安全性(DNSSEC)
在人们运用移动设备访问各类APP的时候,大多数信息都是以未加密的方式,通过无线网络进行往复传输的,因此它们很容易受到截获甚至是攻击。我们需要通过设置SSL或TLS的连接方式,来确保传输数据的安全性。当前,最新的TLS版本为1.3,而大多数网站也都能够通过API的设计,以HTTPS的方式去加密用户的各类敏感信息。
同时,由于几乎所有的网络流量都需要进行标准的DNS查询,因此DNS成为了众矢之的,针对DNS的劫持和中间人攻击时有发生。此类攻击通过将网站的入向流量,重定向到伪造的网站处,进而收集到网站用户的敏感信息,并让企业蒙受损失。
与许多互联网协议相同,DNS系统在设计之初也并未考虑到安全性的相关问题,并且存在着一些设计上的限制。而这些限制在面对技术的快速迭代时,就留下了可乘之机。攻击者很容易出于恶意目的去劫持DNS的查找请求。例如,他们会将用户转发到分发恶意软件、或收集个人信息的欺诈性网站上。
下面是DNS劫持的具体流程:
在上述DNS劫持过程中,攻击者通过恶意软件、或是对某些未授权DNS服务器的修改,来将查询请求重定向到持有其他域名的服务器上。也就是说,您本想访问www.mybank.com,却实际上来到了www.notmybank.com,而且自己浑然不知。
DNS安全扩展(DNSSEC,
https://dzone.com/refcardz/introduction-to-dns-security?chapter=1)是针对此类问题而创建的安全协议。DNSSEC协议通过对数据进行数字签名来保护其有效性,并防止其受到攻击。为了确保实现安全的DNS查找,此类签名必须在DNS查找过程的每个顺序级别上进行。
2. 聚焦安全的API设计
一提到安全,人们往往想到的是复杂性、甚至是不便。因此,API设计的易用性和可扩展性,才是吸引API开发人员、乃至用户的关键战略秘诀。在实践中,当您开始着手为某个微服务构建公开的API时,就应该认真考虑如何设计API的安全性。
只有在设计之初融入了安全性,特别是用户隐私方面的管控,才能节省后续补救与整改的时间和资源。业界著名的RestCase API平台正是通过各种AI和复杂的算法,以方便用户在设计阶段去检查和验证自己的API。同时,它能够给出如何处置API安全性方面的各种建议。
3. 人工智能(AI)驱动的API安全性
目前,在不同的行业,开发人员通过将系统的API与海量的数据相集成,在计算机视觉、空间位置、嵌入式应用、Web网格、移动文本数据、以及自然语言处理等领域,得到了很好的商业智能化应用,和对发展趋势的预判。通过对于不同实时数据源的持续检测与分析,各类应用具备了更快、更智能的响应能力。
与此同时,我们应该利用好丰富的数据资源,运用AI相关的趋势分析能力,对于调用API的流量进行深度分析,进而侦测到各种历史攻击与异常,并通过自动化的修补措施,以防止后续攻击的再次发生。例如,某些针对特定API的DoS攻击源,会在网络中扫描并攻击那些设计方案欠佳,且未对访问请求实施流速限制的API。有时候,某些API节点会在算力(computation)上非常消耗资源。例如:那些需要通过哈希算法来进行身份验证的逻辑。因此,一些经验丰富的攻击者,经常会有目的性地利用并向此类节点发送垃圾邮件,以拖垮或破坏整个系统。
4. 机器学习(ML)驱动的API安全性
如果说AI主要是用于对攻击进行智能判断的话,那么ML则主要能够用于提取威胁的特征。通过开发带有ML功能的智能API,运维人员能够有效地管理各种具有挑战性和新出现的威胁模型。运用此类API的安全性,我们将能够更加准确地识别和标记出各种异常行为,判断出恶意攻击的发展趋势,以及识别和阻止在多种环境、及情况下针对API的攻击行为模式。可以说,有了持续学习功能对于API的加持,我们便可以在无法预知攻击源、以及预设应对策略的情况下,及时识别出正在发生的异常行为。
目前,广泛用于各种API安全方面的机器学习算法,包括:朴素贝叶斯、KNN最近邻(K-Nearest Neighbors)、决策树、随机森林、支持向量机、深度学习、以及神经网络等。
总结
随着现代化技术的日新月异,API安全性已日渐成为了网络应用方面的主要技术需求之一。目前,AI和ML作为有效且智能的工具,已经逐渐被应用到了协议栈的各个层面上,以实现API的全栈安全防护。当然,就下一步发展趋势来看,开发人员需要进一步加大对于API业务模型、分析能力、技术蓝图、以及合规性与标准化方面的深入研究与开发。
原文标题:State of API Security,作者:Guy Levin
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】