Client Side app <--> Backend <--> API
这是从其他客户端应用程序访问API的正确方式吗?如果是,为什么我们需要API?我们可以直接使用后端来获取和处理数据,然后发送回客户端。你能解释一下吗?
注:
我上面的简单图的意思是,客户端应用程序向后端发出请求,然后后端向API发出请求
您无法保护API不受其他客户端应用程序的影响。你在请求中发送的任何神奇的东西都意味着";嘿,我被授权了"必须是应用程序的一部分,在这种情况下,它可以进行逆向工程。你可以做的是授权用户——用户可以通过一些秘密(如用户名和密码)登录,服务器可以发回一个密码作为响应,客户端将在稍后的请求中发回。每个用户的密码都不一样。做到这一点,并通过加密连接(HTTPS)进行,这几乎是你在这方面所能做的最好的事情(有一些小细节,比如过期旧代码并轮换它们,但它们都是围绕这个想法的实现细节)。
你可以授权用户而不是应用程序的原因是,用户拥有一个反编译应用程序的人无法获得的秘密,因为它不在那里——它在用户的头脑中。如果没有这一点,就无法知道一个应用程序是否真的被授权,或者是否有人反编译并窃取了你的秘密。
您的问题
我上面的简单图的意思是,客户端应用程序向后端发出请求,然后后端向API发出请求。
在我看来,您对所使用的术语有点困惑,因为API服务器实际上是后端。
我认为你使用这个的意思是:
Client Side app <--> Backend <--> API
这是吗
Client Side app <--> Reverse proxy <--> API
反向代理
用于减少移动应用程序中API密钥数量的传统方法是使用反向代理,但只有当您的应用程序向两个或多个API发出请求时,这才有意义,因为您总是需要API密钥才能向反向代理发出请求。
反向代理更常用于保护对第三方API的访问,我写了一篇文章《使用反向代理保护第三方api》,更详细地介绍了为什么应该使用它:
在本文中,您将首先了解什么是第三方API,以及为什么不应该直接从移动应用程序中访问它们。接下来,您将了解什么是反向代理,以及何时以及为什么应该使用它来保护对移动应用程序中使用的第三方API的访问。
反向代理的使用仅改变了保护第三方服务的API密钥或您自己的API后端的需要,以保护API密钥或用于访问反向代理的任何其他秘密/标识符,但其优点是您现在可以控制如何访问第三方API,同时将API密钥保持在移动应用程序攻击者无法访问的范围之外。换言之,您只在移动应用程序中暴露一个API密钥,从而减少了攻击面,并增加了一个单独的位置,可以减少使用API后端的滥用。
访问API服务器的世界卫生组织和什么不同
在我将您链接到一些可能的解决方案之前,我想首先澄清我在任何资历的开发人员中发现的一个误解,即谁和什么访问API服务器之间的差异。
我写了一系列关于API和移动安全的文章,在文章中,为什么你的移动应用程序需要API密钥?您可以详细阅读谁和什么访问您的API服务器之间的区别,但我将在这里提取它的主要内容:
what是向API服务器发出请求的东西。它真的是你的移动应用程序的真实实例,还是机器人程序、自动脚本或攻击者用Postman这样的工具手动在你的API服务器上戳来戳去?
谁是移动应用程序的用户,我们可以通过多种方式对其进行身份验证、授权和识别,例如使用OpenID Connect或OAUTH2流。
因此,请考虑谁作为用户,您的API服务器将能够对数据进行身份验证和授权访问,并考虑what是代表用户发出请求的软件。
当你掌握了这个想法,并且它在你的心态中根深蒂固时,你将从另一个角度审视移动API安全性,并能够看到你从未想过存在过的攻击表面。
可能的解决方案
我建议您阅读我对以下问题的回答如何确保移动应用程序的API REST安全,特别是加强和屏蔽移动应用程序、保护API服务器和可能的更好解决方案部分。
将API后端锁定到移动应用程序的最佳选择是使用移动应用程序验证解决方案,该解决方案将为API后端提供高度的信心,使其确信该请求确实来自移动应用程序真实且无限制的版本。
你想多跑一英里吗
在回答安全问题时,我总是喜欢引用OWASP基金会的出色工作。
对于APIS
OWASP API安全前10名
OWASP API安全项目旨在通过强调不安全API中的潜在风险并说明如何减轻这些风险,为软件开发人员和安全评估人员提供价值。为了实现这一目标,OWASP API安全项目将创建并维护API十大安全风险文档,以及创建或评估API时最佳实践的文档门户。
适用于移动应用程序
OWASP移动安全项目-十大风险
OWASP移动安全项目是一个集中的资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类,并提供开发控制,以减少其影响或被利用的可能性。
OWASP-移动安全测试指南:
《移动安全测试指南》(MSTG)是一本关于移动应用程序安全开发、测试和逆向工程的综合手册。