保护API仅可用于特定应用

时间:2020-10-12 09:18:02

标签: android ios api security

寻找一种方法来确定如何确保仅由我的服务器API满足来自移动应用程序的请求。

这是为了使来宾用户能够看到该应用程序,而不是暴露出可供BOT使用的数据。

是否有一个Android或iOS应用程序属性可帮助创建与此相关的请求?

2 个答案:

答案 0 :(得分:0)

您可以在请求中传递应用程序的程序包名称(Android)/捆绑包标识符(iOS应用程序)。参数仅用于验证来自您应用的请求。

通过这种方式,您可以检查服务器上的捆绑包标识符/程序包名称,并以此为基础来限制用户允许/禁止使用api。

另一种方法是api密钥/令牌的用户。

您可以在服务器上创建唯一的令牌/密钥,并提供给移动应用程序开发人员,然后要求在每个api请求中将其发送。

因此,当您在服务器上收到请求时,可以验证服务器上的api密钥/令牌。如果密钥/令牌无效,则禁止用户访问您的api。

答案 1 :(得分:0)

寻找一种方法来确定如何确保仅由我的服务器API满足来自移动应用程序的请求。

正如现在所说的那样,我阅读它的目的更像是要确保您的移动应用仅发送和接收来自您的API服务器的请求,而不是来自假冒您自己的攻击者API服务器或MitM攻击的请求。在这种情况下,解决方案是将证书固定添加到您的移动应用程序中,但是应该始终将其添加到任何移动应用程序中。

我认为您的意思是要确保您的API服务器仅回复来自移动应用程序真实实例的请求。如果是这种情况,那么您正在寻求将您的API服务器锁定到您的移动应用程序,这将带来巨大的挑战和多种方法。

证书固定

要在移动应用中实现证书固定,建议您阅读文章Securing HTTPS with Certificate Pinning

为了演示如何使用证书固定来保护您的移动应用程序和API服务器之间的https流量,我们将使用与上一篇文章相同的Currency Converter Demo移动应用程序。

在本文中,我们将学习什么是证书固定,何时使用,如何在Android应用程序中实现以及如何防止MitM攻击。

因此,本文将指导您在this repo中找到的示例应用程序中实现证书固定的实际实现。

将API服务器锁定到移动应用

我建议您阅读this answer我对问题如何保护移动应用程序的API REST?的问题,尤其是保护API服务器的部分和更好的解决方案

移动Aapp中的加密密钥生成

我在您对另一答案的评论中看到了这一点(您也应该将其添加到您的问题中):

我正在寻找一种在应用程序中创建只能在服务器上解密的加密密钥的安全方法。

您确实可以借助Android Security Library安全地创建一个:

安全库提供了与静态数据读取和写入以及密钥创建和验证有关的安全最佳实践的实现。

我在this answer中详细讨论了问题在Android中安全存储客户端证书和密钥(.pem) ,其中包含一些代码示例。

您想走多远吗?

在回答安全问题时,我总是喜欢引用OWASP基金会的出色工作。

对于APIS

OWASP API Security Top 10

OWASP API安全项目旨在通过强调不安全API中的潜在风险并说明如何减轻这些风险来为软件开发人员和安全评估人员提供价值。为了实现此目标,OWASP API安全项目将创建和维护“十大API安全风险”文档,以及用于创建或评估API的最佳实践的文档门户。

对于移动应用

OWASP Mobile Security Project - Top 10 risks

OWASP移动安全项目是一个集中式资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类并提供开发控制措施,以减少其影响或被利用的可能性。

OWASP - Mobile Security Testing Guide

移动安全测试指南(MSTG)是用于移动应用安全开发,测试和逆向工程的综合手册。