我想用 JavaScript 开发一个“响应式移动网络应用程序(iOS / Android) ”来与智能合约和区块链交互。
我决定开发一个混合移动 Web 应用程序。但是,问题是在使用 JavaScript 开发移动 Web 应用程序时如何安全地存储 App Secret?因为,出于安全考虑,我们不想将其存储在移动和区块链中。
我想用 JavaScript 开发一个“响应式移动网络应用程序(iOS / Android) ”来与智能合约和区块链交互。
我决定开发一个混合移动 Web 应用程序。但是,问题是在使用 JavaScript 开发移动 Web 应用程序时如何安全地存储 App Secret?因为,出于安全考虑,我们不想将其存储在移动和区块链中。
我想用 JavaScript 开发一个“响应式移动 Web 应用程序(iOS / Android)”来与智能合约和区块链交互。
我不清楚您是否将移动应用程序编写为在移动设备中完全响应的网站,或者您是否正在考虑使用 Ionic、React Native 或其他框架编写它。
据我所知,如果是一个响应式网站,那么一旦没有安全的方法来保护它们的秘密,请忽略我的其余答案。
现在,如果是使用许多可用框架中的任何一个完成的跨平台移动应用程序,请继续阅读,因为存在一种可能的解决方案来解决它们上的秘密问题。
但是,问题是在使用 JavaScript 开发移动 Web 应用程序时如何安全地存储 App Secret?
在客户端运行的任何东西都容易受到使用Xposed或Frida等工具进行逆向工程的攻击。
因为,出于安全考虑,我们不想将其存储在移动和区块链中。
正如您已经指出的那样,移动或区块链不是存储 App Secret 的好地方。
为了加强您的移动应用程序和 API 服务器之间的通信,您应该使用移动应用程序证明服务,这将通过使用 SDK 来保证您的应用程序在运行时没有被修改或没有在越狱或 root 设备中运行集成在您的应用程序和在云中运行的服务中。
成功证明应用程序完整性的云服务会发出一个JWT 令牌,该令牌使用只有 API 服务器和云服务知道的秘密进行签名,失败时,JWT 令牌使用 API 服务器不知道的虚假秘密进行签名. 这种方法将允许 API 服务器仅在它可以验证 JWT 令牌中的签名时服务请求,并在验证失败时拒绝它们。
一旦移动应用程序不知道云证明服务使用的秘密,就不可能在运行时对其进行逆向工程,即使应用程序被篡改、在有根设备中运行或通过正在作为中间人攻击的目标。
在本文中,您可以通过示例了解如何使用云中的 Mobile App Attestation 服务对 React Native App 进行身份验证。
免责声明:我在 Approov 工作
Xposed 是一个模块框架,可以在不触及任何 APK 的情况下改变系统和应用程序的行为。这很好,因为这意味着模块可以在不同版本甚至 ROM 上工作而无需任何更改(只要原始代码没有太大更改)。它也很容易撤消。由于所有更改都在内存中完成,您只需停用模块并重新启动即可恢复原始系统。还有许多其他优点,但这里只是一个优点:多个模块可以对系统或应用程序的同一部分进行更改。使用修改后的 APK,您可以选择一个。没有办法组合它们,除非作者用不同的组合构建了多个 APK。
面向开发人员、逆向工程师和安全研究人员的动态检测工具包。
基于令牌的身份验证
JSON Web 令牌是一种开放的行业标准 RFC 7519 方法,用于在两方之间安全地表示声明。