内容纲要

背景

在近期参与的一个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中弹出。

基于这样的需求和考量,我们最终选用了第三方组件jail-monkey进行设备检测,并配合使用react-native-exit-app来将用户弹出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();
}
最后修改日期: 2024年2月4日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。