内容纲要
背景
在近期参与的一个APP项目中,由于项目尚处于初期阶段,诸多安全性设计尚未完善。其中,如何处理root环境和越狱设备成为了一个亟待解决的问题。Root权限,主要针对安卓系统,意指破解系统终端权限,使应用得以获取更多权限,但同时也大大降低了系统的安全性。而对于iOS系统,越狱则是指突破其限制,同样会带来一系列的安全性问题。
具体来说,root或越狱环境可能引发以下安全风险:
- 恶意软件攻击:root权限允许应用程序拥有系统级别的权限,这使得恶意软件更容易利用系统漏洞,窃取用户隐私信息,破坏系统稳定性。
- 数据泄露:root权限使应用程序可以随意读取、修改系统文件,可能导致用户数据泄露。
- 系统崩溃和不稳定:root权限使应用程序可以随意修改系统文件,可能导致系统崩溃或不稳定。
所以在APP的安全性设计中,针对已获取Root权限的Android设备和越狱的iOS设备,我们必须采取有效的拦截措施。一旦检测到这些存在安全风险的设备,我们需要在APP启动后立即阻止用户的所有操作,并直接将其从APP中弹出。这样的做法能够最大限度地保护APP和用户数据的安全,防止恶意软件攻击、数据泄露以及系统崩溃等潜在风险。
实现
环境
- React Native
- Android & IOS
- JavaScript
- NodeJS
组件引入
考虑到我们的APP同时支持Android和iOS平台,为了确保安全性和一致性,我们需要找到一种能够同时检测Root权限和越狱设备的方法。这样,无论用户使用哪个平台的设备,我们都能采用统一的策略来处理安全问题。对于存在安全风险的设备,我们应该立即阻止用户操作,并将其从APP中弹出。
基于这样的需求和考量,我们最终选用了第三方组件
来将用户弹出APP。jail-monkey
进行设备检测,并配合使用
react-native-exit-app
关于这两个组件的更多信息,可以参考其GitHub仓库。
https://github.com/GantMan/jail-monkey
https://github.com/wumke/react-native-exit-app
npm i jail-monkey --save
npm install react-native-exit-app --save
代码实现
import RNExitApp from 'react-native-exit-app';
import JailMonkey from 'jail-monkey';
if (JailMonkey.isJailBroken()) {
//可以做一些弹窗提示
RNExitApp.exitApp();
}
留言