O que é root e jail-broken?
root
Fazer o root no seu aparelho significa se tornar um superusuário, ou administrador do sistema. Isso implica ter acesso a partes do Android que antes ficavam inacessíveis para um usuário comum. Sim, a grande vantagem é ganhar controle total do seu celular e do seu sistema operacional
jail-broken
O jailbreak é uma alteração, um hack, no sistema que permite ao usuário adentrar a raiz do equipamento, tendo acesso a todos os arquivos do iOS. Em termos práticos, isso significa poder personalizar e instalar apps livremente, sem depender da loja oficial da Apple.
Porque devo me preocupar com isso?
Uma aplicação sendo executada em um dispositivo com os privilégios do usuário root ou jail broken acessíveis pode ter seu fluxo de execução modificado por outro processo sendo executado no mesmo dispositivo.
Um usuário malicioso pode monitorar as suas requisições, extrair dados salvos no storage do dispositivo, entre outras ações.
O que faz o jail-monkey?
- Identifica se o telefone tem acesso a root ou jail-broken.
- Detecta se o dispositivo possui localização mockada ( Eu sei que você usou isso no jogo Pokemon GO 😏).
- Detecta se o aplicativo está rodando em um SD Card.
Chega de blá blá blá e bora colocar a mão no código.
Vamos iniciar um projeto utilizando o React Native CLI.
react-native init myApp
ou
npx react-native init myApp
Vamos rodar nossa aplicação em um emulador
// para executar em um dispositivo android
yarn android
// para ios
yarn ios
Se deu tudo certo no processo de build, você verá algo como:
Até agora, nós criamos nosso app e conseguimos rodar ele no nosso dispositivo/ emulador.
Se você fechar o aplicativo e clicar no ícone na tela inicial do dispositivo, você verá que o projeto vai startar normalmente.
Agora vamos adicionar a biblioteca do Jail-monkey no projeto.
// para instalar usando npm
npm i jail-monkey --save
// usando yarn
yarn add jail-monkey
Feito isso, vamos linkar a biblioteca no nosso projeto.
OBS: Você só precisa rodar este comando caso esteja utilizando uma versão do react native < 0.60.0
react-native link
Em seguida, faça um novo build do seu projeto.
yarn android
ou
yarn ios
Beleza, agora nós temos tudo instalado no projeto.
Vamos configurar a biblioteca agora no nosso aplicativo, para isso, vá até o seu arquivo principal do seu projeto ( no nosso caso é o App.js da raiz do projeto ) e adicione o seguinte código.
Vamos ver o que fizermos:
- importamos o BackHandler do próprio React Native para usarmos a função ExitApp.
- importamos a biblioteca do jail-monkey
- criamos uma condição utilizando uma função que retorna se o dispositivo possui root/ jail-broken e fechamos a aplicação.
Ps: No passo 3, você poderia simplesmente criar um modal bonitinho explicando que o usuário não possui a segurança necessária para utilizar a nossa aplicação, fica com uma usabilidade bem melhor ☺️.
Depois de tudo isso, se você salvar o código, fechar o app e tentar abrir em um emulador android, automaticamente a sua aplicação fechará, isto é por conta do emulador android possuir root nativamente, mas se você testar em um dispositivo fisico, a sua aplicação irá funcionar normalmente.
Além do exemplo que criamos acima, você pode explorar um pouco dos recursos do jail-monkey e adicionar de acordo com a sua necessidade.
Alguns metodos da API do Jail-monkey
Method | Returns | Description |
---|---|---|
isJailBroken |
boolean |
is this device jail-broken/rooted. |
canMockLocation |
boolean |
Can this device fake its GPS location. |
trustFall |
boolean |
Checks if the device violates either isJailBroken or canMockLocation . |
isDebuggedMode |
Promise<boolean> |
Is the application is running in debug mode. Note that this method returns a Promise. |
Bom, por hoje é isso, espero que ajude vocês a melhorar a segurança dos aplicativos em React Native.
Valeu
Top comments (1)
Muito bom!!