仅从我的应用程序访问我的后端 node.js

access my backend node.js only from my app

我想知道如何才能做到只有我的 android 应用程序,用本机反应开发,才能访问我的 API 节点 js。所以我的服务器只能从我的网站访问,使用简单的域白名单,以及从我的应用程序

没有办法保证这一点。客户端控制客户端发生的一切。如果应用程序包含防止客户端干扰的保护机制,则可以对其进行逆向工程。

一种防止未经授权的客户端连接到后端的方法是使用 API 密钥发出后端请求,该密钥作为加密(散列)字符串传输并在服务器端进行验证。滥用 API 密钥需要列入黑名单。

由于散列键可以从 API 请求中提取,使这更复杂的一种方法是使散列 API 键依赖于特定请求,例如:

fetchData(url + '&api_key_hash=' + md5(SALT + url + SECRET_API_KEY))

api_key_hash 仍然可以在服务器端进行验证,但对于想要未经授权访问后端 API 的客户端来说是无用的。客户端的唯一方法是获取 SECRET_API_KEY.

由于可以对客户端应用程序进行逆向工程以获取未加密的 API 密钥,因此使逆向工程更加复杂的一种方法是不将密钥存储为纯字符串并混淆应用程序。

请注意,虽然这些措施不能保证应用程序不会被逆向工程以提取 API 密钥,但混淆会使应用程序开发人员的事情变得复杂,例如调试和分析崩溃报告。据我所知,除了 JS 混淆之外,不使用任何保护的 React Native 应用程序的逆向工程是微不足道的。