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

Nic*_*lli 3 javascript whitelist node.js server react-native

我想知道如何才能做到只有我的使用本机 React 开发的 Android 应用程序才能访问我的 API Node js。因此,我的服务器只能从我的网站(使用简单的域白名单)和我的应用程序访问

Est*_*ask 5

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

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

由于可以从 API 请求中提取哈希密钥,因此使此过程变得更加复杂的一种方法是使哈希 API 密钥依赖于特定请求,例如:

fetchData(url + '&api_key_hash=' + md5(SALT + url + SECRET_API_KEY))
Run Code Online (Sandbox Code Playgroud)

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

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

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