当前位置: 首页 > 科技观察

如何安全加固API,规避漏洞风险?_2

时间:2023-03-16 01:09:09 科技观察

翻译|陈军应用程序编程接口(API),一种中间接口,是一组允许软件组件相互交互的协议。他通常可以将基础架构与运行在其上的应用程序分离,并抽象出系统之间的不同功能。同时,API还可以让软件团队通过重用代码来简化开发。随着API在现代商业中的优势和用例越来越多,其固有弱点带来的各种安全风险逐渐引起开发社区的关注。下面,我将与大家一起探讨与API漏洞相关的各种风险,同时介绍各种常见的API安全实践,构建API安全机制。1.什么是API安全?作为一组服务,API支持程序与另一个外部或内部程序之间的通信。当我们谈论API安全时,我们通常指的是保护应用程序的后端服务,包括数据库、用户管理系统和其他与数据存储交互的组件。因此,API安全通常包括采用多种工具和实践来保护技术堆栈的完整性,从而防止恶意攻击者访问敏感信息或执行各种违规行为。不幸的是,虽然API是现代应用程序的关键部分,但它们也是攻击者访问敏感信息的常见目标入口点。随着API成为越来越多的攻击目标,我们有必要在构建API时,了解第三方应用如何通过接口传输敏感数据,并在此基础上,通过部署API安全措施,协助安全团队评估风险,提升整体服务的安全态势。2.API漏洞风险由于API通常可以公开访问,因此它们自然成为窃取敏感信息(如应用程序逻辑、用户凭据和信用卡号)的常用方法。通常,攻击者利用API端点中的漏洞通过跨站点脚本和代码注入等方法获得对目标系统的未授权访问,以及其他形式的网络攻击。目前,业界比较认可的OpenWebApplicationSecurityProject(OWASP)已经针对十大常见WebAPI漏洞发布了基于各种风险的说明和建议。在这里,我将重点与您讨论以下几个方面:损坏的用户身份验证:由于API依赖于调用中嵌入的会话令牌,该令牌已对客户端进行身份验证,因此如果无法实现多因素身份验证和基于凭据的登录在API中,仅靠基本密码身份验证显然是不够的。攻击者可以通过冒充合法用户轻松强制API错误地授予他们对令牌的访问权限。而且,对于那些长期存在的令牌,它可能导致攻击者能够长期存在并破坏系统。损坏的对象级别授权:在API中,对象级别授权是一种代码级别的控制机制,可用于验证对对象的访问。对于存在对象级授权漏洞的API,外部用户可以将自己的资源ID替换为其他用户的资源ID。因此,攻击者可以访问指定的用户资源,然后获得对敏感数据的未授权访问。缺乏资源和速率限制:当API不限制来自特定客户端的请求的数量和频率时,它们可能被迫每秒进行大量调用。同时,API客户端也可以一次请求访问多个资源和记录,使应用服务器不堪重负,以便立即为多个请求提供服务。这种由于来自客户端的单个过度请求而导致服务器无法处理正常请求的能力是一种常见的拒绝服务(DoS)攻击。此外,缺乏速率限制将允许攻击者对身份验证端点发起暴力攻击。批量分配:当用户的输入自动传递给对象或程序变量的API时,就会出现批量分配漏洞。虽然此功能简化了代码开发,但某些用户可能会通过初始化和覆盖服务器端变量来危及应用程序的安全性。也就是说,攻击者主要通过在伪造请求时猜测并提供额外的对象属性来达到这个目的。此外,他们还可以阅读应用程序的文档,或识别允许其修改服务器端对象的弱API端点。安全错误配置:各种安全错误配置对API造成不同的威胁,包括:(1)冗长的错误消息:一些API会发送堆栈跟踪和描述性系统信息的错误消息,以便接收者了解应用程序在后台的工作情况。(2)错误配置的HTTP标头(MisconfiguredHTTPHeaders):标头会暴露安全漏洞,攻击者可以利用这些漏洞窃取数据并进行更深层次的复杂攻击。(3)不必要的HTTP方法和服务:如果管理员未能关闭不必要的服务,恶意攻击者可以使用不同的HTTP方法修改发布的内容和资源。(4)不安全的默认配置:API往往与第三方依赖相关联。然而,这种关联在默认情况下是不安全的,需要强化安全态势来解决由此产生的扩大的攻击面。3.API安全的优秀实践下面我将给出各种有助于减轻API攻击的优秀实践:1.使用throttling和ratelimiting你可以设置一个临时状态来评估每个API请求,并使用Anti-spammeasures和measuresto防止滥用等,以抵御拒绝服务攻击。实施节流时要考虑的重要因素包括应允许每个用户使用多少数据以及何时应实施节流。此外,在某些API中,开发人员可以设置“软”速率限制,允许客户端在短时间内暂时超过请求限制。由于可以处理同步和异步请求,因此设置超时成为避免DoS和暴力攻击以及管理RESTAPI安全性的最直接的做法之一。例如:各种编程语言都可以通过队列库目录来管理请求队列。其中,请求队列库可以支持创建的可以接受最大请求数的API,将剩余的请求放入等待队列。2.API漏洞扫描为了维护API服务的持续安全,在软件生命周期的各个阶段实现自动化扫描、漏洞识别并及时修复各种漏洞至关重要。自动扫描工具通过将应用程序的配置与已知漏洞数据库进行比较,可以自动检测安全漏洞。3.为RESTAPI实现HTTPS/TLS在实践中,我们需要为每个API实现完整性、机密性和真实性。作为一种安全协议,HTTPS和传输层安全性(TLS)可用于在Web浏览器和服务器之间传输加密数据,并在传输过程中保护身份验证凭据。安全团队应考虑使用相互身份验证客户端证书来为敏感数据和服务提供额外保护。此外,在构建安全的RESTAPI时,开发者不仅要避免直接将HTTP重定向到HTTPS,这可能会损害API客户端的安全;还要采取适当的措施,中转各种跨域资源共享(Cross-OriginResourceSharing,CORS)和JSONP请求,毕竟两者往往都存在跨域调用的各种基础漏洞。4.限制HTTP方法RESTAPI允许Web应用程序执行各种类型的HTTP(动词)操作。但是,由于HTTP上的数据是未加密的,一旦我们使用此类HTTP操作,它可能会被某些攻击媒介拦截和利用。作为一种好的做法,我们应该禁止已被证明在本质上极其不安全的HTTP方法(例如:GET、PUT、DELETE和POST等)。如果不能完全禁止这种使用,安全团队也应该采取相应的策略,以严格的允许列表的形式审查这种方法的使用,然后拒绝所有不符合列表的请求。当然,我也推荐大家使用RESTfulAPI认证的最佳实践,保证请求客户端只能对操作、记录、资源集合使用指定的HTTP方法。5.实施充分的输入验证原则上,我们不应该盲目相信API客户端提供的各种数据,毕竟验证服务器最终可能会执行来自未授权用户或应用服务的恶意脚本。虽然客户端验证已经能够针对可接受的用户输入给出交互式错误指示和建议,但安全团队仍然需要在服务器端实现输入验证机制以防止有害数据输入并避免不同类型的XSS和SQL注入攻击.6、使用API??网关API网关可以将客户端接口与后端API集合有效分离,提供集中资源,实现API服务的一致性、可用性和可扩展性。同时,网关还可以充当反向代理,协调所有API调用所需的资源,经过认证后,返回相应的结果。在实践中,我们可以通过API管理平台来处理各种遥测(Telemetry)、限速、用户认证等标准化功能,以维护内部服务之间的安全。原文链接:https://dzone.com/articles/best-practices-to-secure-your-api实施内外部资源和风险管控,重点传播网络和信息安全知识和经验;持续以博文、专题、翻译等形式分享前沿技术和新知识;经常通过线上和线下的方式开展信息安全培训和培训。教。