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

浅谈API安全的应用

时间:2023-03-17 01:38:43 科技观察

理论基础API的全称是ApplicationProgrammingInterface,又称应用程序编程接口,定义了软件之间的数据交互方式和功能类型。随着互联网的普及和发展,API已经从早期的软件调用的接口扩展到在互联网上对外提供服务的接口。通过调用API,调用者无需访问源代码或了解内部工作机制的细节,即可获得接口提供的各种服务。API是一种预定义的函数,为程序之间的数据交互和函数触发提供服务。调用者只需调用API,输入预先约定的参数即可实现开发者封装的各种功能,无需访问功能源码,也无需了解功能的具体实现机制。API通常包括以下组成部分:通信协议、域名、版本号、路径、请求方法、请求参数、响应参数、接口文档等。API是程序开发的基础,尤其是系统API函数。通过系统的API函数可以快速实现程序开发的功能。现在的高级语言也是根据语言特性封装各种方便程序开发的API接口。这样就减少了开发者对具体功能的实现,只要直接调用API函数即可快速实现功能。但是,API虽然方便开发,但也存在并暴露出很多安全隐患。API的安全风险包括直接HOOK风险、安全漏洞风险、安全攻击风险。API安全由多个相互交叉的安全规则组成,主要表现在以下三个部分:破坏。网络安全:解决服务的两个方面,如何保护通过网络传输的数据流以及如何防止未经授权的网络。应用程序安全:确保应用程序的设计和部署能够抵御攻击和防止滥用。API安全风险在API的开发和部署过程中,难免会出现各种安全漏洞。这些漏洞通常存在于通信协议、请求方法、请求参数、响应参数、访问行为等方面,面临外部和内部威胁。例如,外部攻击者通过API的非授权访问非法获取数据,API参数未经过严格验证和非法篡改等。API在应对外部威胁的同时,也面临着内部威胁。API接口设计之初,没有对API接口的访问频率进行限制,使得攻击者可以在短时间内访问大量的API接口,从而导致高频访问营销作弊、恶意注册等攻击行为,可以在短时间内完成,甚至可能带来CC攻击。OWASP总结的Top10API安全风险1.无效的对象级授权API往往会暴露处理对象标识的端点,从而导致广泛的攻击面访问控制问题。在有权访问用户输入数据的每个功能中都应考虑对象级授权检查。2.损坏的用户身份验证身份验证机制通常实施不正确,允许攻击者破坏身份验证令牌或利用实施缺陷暂时或永久冒充其他用户。损害系统识别客户/用户的能力会损害API的整体安全性。3.数据泄露过多开发者倾向于暴露所有对象属性而不考虑其个别数据的敏感性,依赖于客户端进行数据过滤和展示。4.缺乏资源和速率限制API通常不会对客户端/用户可以请求的资源大小或数量施加任何限制。这不仅会影响API服务器的性能,导致拒绝服务(DoS),还会为暴力攻击等身份验证漏洞打开大门。5.功能级授权失效具有不同级别、分组和角色的复杂访问控制策略,以及管理功能和常规功能之间的歧义,往往会导致授权缺陷。通过利用这些问题,攻击者可以访问其他用户的资源和/或管理功能。6.批量分配将客户端提供的数据(例如JSON)绑定到数据模型,而没有基于白名单进行适当的属性过滤,通常会导致批量分配。无论是猜测对象属性、浏览其他API端点、阅读文档,还是在请求负载中提供其他对象属性,攻击者都可以在其权限之外修改对象属性。7.安全错误配置最常见的安全错误配置是不安全的默认配置、不完整或临时配置、开放的云存储、错误配置的HTTP标头、不必要的HTTP方法、跨源资源共享(CORS)和包含敏感信息的冗长错误消息。8.注入当不可信的数据作为命令或查询的一部分发送给解释器时,如SQL、NoSQL命令注入等,就会出现注入缺陷。攻击者的恶意数据可能会诱使解释器执行非预期的命令,或获得对数据。9.不正确的资产管理API往往会暴露比传统Web应用程序更多的端点,这使得准确和最新的文档变得更加重要。健康的主机和最新的API版本可以有效缓解API版本过期和调试端点暴露等安全问题。10.日志记录和监控不足日志记录和监控不足,加上事件响应的缺失或无效集成,使攻击者可以进一步攻击系统、持续存在并横向移动到更多系统以篡改、提取或破坏数据。大量入侵调查研究表明,检测到入侵的平均时间超过200天,而且入侵检测警报通常来自外部第三方,而不是企业内部安全流程或监控。API安全同时,在应用安全方面,除了参考OWASP安全风险外,同时,面对系统自身API的一些安全漏洞,也面临部分系统API被攻击的风险上钩并改变过程。这是逆向工程的常规实现,在软件开发过程中也需要注意和处理。API安全测试API安全测试主要是测试其API的安全性、正确性和可靠性,确保产品满足安全要求。它的测试需要涵盖用户访问、加密和身份验证。API安全测试从定义要测试的API开始。该测试工具使用各种规范格式(包括OpenAPIv2/v3、PostmanCollections和HAR文件)提供有关API输入和输出的信息。API安全测试是一个复杂的领域,API的安全测试给手动、自动化和混合活动带来了新的挑战。API安全测试一般需要静态分析工具和动态分析工具相结合。在API安全测试中,可以针对常见的API安全漏洞,如SQL和OS命令注入、授权/认证绕过、路径遍历问题、OWASPTop10API漏洞等。专注于安全测试。静态分析工具可有效识别特定于语言的软件安全问题或众所周知的注入攻击类别,继续有效对抗API密集型代码库,但前提是这些工具还对所使用的库和平台执行测试公开那些API路由。造型。API安全测试时,也推荐使用OWASPZap和Postman进行API安全测试。同时可以参考以下githubs。1、https://github.com/roottusk/vapi2、API端点爆破https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content/api3、未授权测试https://github.com/PortSwigger/autorizeAPI安全应用API安全应用应关注API安全漏洞,进而进行API安全对策的研发和政策制定。API安全应用还应满足机密性(确保信息只能由指定用户访问)、完整性(防止未经授权的创建、修改和删除)和可用性(确保在用户需要访问API时可用)。在应用安全方面,API安全可重点关注语言安全编码规则,熟悉软件常见安全漏洞,加强对API系统和应用凭证访问的管理。例如,对系统内置的一些具有敏感操作的API函数加强保护,可以采用自实现的方式,防止函数过程直接与系统函数挂钩,破坏函数过程。API安全中的网络安全方面,可以重点关注防火墙、负载均衡、反向代理等,使用安全的通信协议(如https)来保证通信中的数据安全。在应用API安全实践中,可以遵循以下规则来提高API安全性。1.每个API都应该使用传输层安全(TLS)来防止数据泄露。虽然这引入了证书管理的复杂性,但现代平台正在转向集成证书解决方案以简化采用。2.对于身份已知的内部用户,只要安全地管理密钥,就可以使用API密钥来简化对API的访问,而无需OAuth2的复杂性。3.不要将任何API密钥提交到源代码存储库,必要时使用秘密管理解决方案。4.使用授权中间件规范访问控制,避免功能级授权漏洞的破坏。5.确保对API密钥使用精细权限,以避免提供不必要或意外的访问。6、如果你开发的软件有特别复杂的授权要求,请考虑使用标准库,而不是重新发明轮子,增加复杂性和维护问题。7、使用标准的授权方式降低复杂度,同时使用客户端进行密集处理,减少返回给客户端的数据量。8、加强软件日志的执行,确保采用标准模式,并有利用后续日志信息的审查和优化。小结API安全日益成为网络应用的主要技术需求之一。开发者需要进一步加大对API商业模式、分析能力、技术蓝图、合规标准化等方面的深度研发。通过自动化和多样化的API网络攻击,黑客不仅可以消耗系统资源和中断服务,还可以通过逆向工程掌握API应用和部署,监控未加密的数据传输,窃取企业数据。安全架构设计中有很多安全设计原则,比如开放设计原则、最小权限、最小开放、默认不信任等等。因此,这些安全原则在API安全设计过程中也可以借鉴。在API安全上,也需要关注API安全的全生命周期:设计、开发、测试、线上运行、迭代、线下。API非法调用、API安全漏洞、API数据泄露等问题都会出现在这个生命周期中。