通过移动应用程序访问REST-API,没有登录名



我想通过移动应用程序(react-nativatiate)安全地访问REST API(.NET),该应用程序没有登录,但在背景上创建用户,并在背景上使用唯一的ID创建应用是第一次打开。

客户端应用程序 - 可以用一些UID识别。

后端服务 - 客户端应用需要致电以检索一些列表。

确保此后端服务的最佳实践是什么?我不想通过登录/密码进行保护(因为不应要求客户"登录"以检索列表),但是,我不希望任何人轻松地调用此后端API并为自己的列表检索这些列表目的。

规范:该应用程序没有登录。因此,我如何获得第一次使用的令牌并可以使API安全。

REST API:使用用户名&固定REST API密码。

移动应用:在每个REST API调用中发送用户名和密码。

缺点:在逆向工程用户名和密码上存储在移动应用程序中。该代码被混淆,密码存储在某个地方,但黑客在执行某些努力后成功地获取了密码。

如何将安全的呼叫发送到REST-API,因为该应用程序没有登录名,并且无法通过HTTP发送凭据以获取令牌?

您无法避免人们反向工程师并获得您的API密钥(或硬编码的用户/密码组合)。例如,您可以使其更难,例如,通过在与服务器的通信或应用基于IP的API速率限制的过程中使用证书固定的HTTP,以使人们无法轻易监视通信或转储任何API返回的内容,但是您无法使您无法做到这是不可能的。期望人们始终拥有与应用程序(在设备上)具有相同的特权。在您的情况下,这意味着攻击者也可以生成无限的UID,因为它们是由客户请求生成的。这使得使用UID进行任何类型的认真身份验证非常毫无用处。

我的意思是,毕竟,攻击者还可以编写代码以自动使用您的应用程序来提取您要保护的信息,即使他无法拆卸您的应用程序。您的要求是不可能的。

这看起来与您的问题的问题非常相似

1)听起来用户授权不是这里的主要问题,但是我绝对会推荐oauth2,而不是反复发送用户名password。它众所周知,并且既有开源和免费的商业实施方式。在移动设备上,PKCE对于防止Auth Code拦截攻击非常重要。

2)给出了REST API调用的HTTPS,但我鼓励您也固定这些连接。攻击者可以轻松折衷移动设备,并在API调用的中间设备中间。固定对本地的固定很棘手。查看React-Native-Cert-Pinner NPM软件包和/或通过证书固定(Android)或iOS读取React Native中的TLS。

3)使用静态API键几乎不可能防御。如果也使用OAuth2,PKCE将不会停止模仿攻击,尤其是如果您确定具有信任度的使用者的用户,则您将非常容易受到机器人攻击的影响。比API键要好一步是使用API键签署API调用。这样,至少您的API键在API调用本身中不可见。您需要添加一些熵以防止重播攻击,并且在应用程序中混淆您的API密钥至关重要。比这更好,请使用某种形式的应用证明,这些App证明完全从应用程序中删除API键。对于React Native,请参阅React Antial的首次体验:桥接Android Antial模块以进行应用程序验证或类似的iOS以了解这种方法。

相关内容

  • 没有找到相关文章

最新更新