Detectando Root e Jail Broken no seu aplicativo React Native

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,…


This content originally appeared on DEV Community and was authored by Emerson Stark

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.

Mas bora resolver isso!
Image description

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.

Image description

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:

Image description

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.

Image description

Vamos ver o que fizermos:

  1. importamos o BackHandler do próprio React Native para usarmos a função ExitApp.
  2. importamos a biblioteca do jail-monkey
  3. 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


This content originally appeared on DEV Community and was authored by Emerson Stark


Print Share Comment Cite Upload Translate Updates
APA

Emerson Stark | Sciencx (2021-12-29T17:36:28+00:00) Detectando Root e Jail Broken no seu aplicativo React Native. Retrieved from https://www.scien.cx/2021/12/29/detectando-root-e-jail-broken-no-seu-aplicativo-react-native/

MLA
" » Detectando Root e Jail Broken no seu aplicativo React Native." Emerson Stark | Sciencx - Wednesday December 29, 2021, https://www.scien.cx/2021/12/29/detectando-root-e-jail-broken-no-seu-aplicativo-react-native/
HARVARD
Emerson Stark | Sciencx Wednesday December 29, 2021 » Detectando Root e Jail Broken no seu aplicativo React Native., viewed ,<https://www.scien.cx/2021/12/29/detectando-root-e-jail-broken-no-seu-aplicativo-react-native/>
VANCOUVER
Emerson Stark | Sciencx - » Detectando Root e Jail Broken no seu aplicativo React Native. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/12/29/detectando-root-e-jail-broken-no-seu-aplicativo-react-native/
CHICAGO
" » Detectando Root e Jail Broken no seu aplicativo React Native." Emerson Stark | Sciencx - Accessed . https://www.scien.cx/2021/12/29/detectando-root-e-jail-broken-no-seu-aplicativo-react-native/
IEEE
" » Detectando Root e Jail Broken no seu aplicativo React Native." Emerson Stark | Sciencx [Online]. Available: https://www.scien.cx/2021/12/29/detectando-root-e-jail-broken-no-seu-aplicativo-react-native/. [Accessed: ]
rf:citation
» Detectando Root e Jail Broken no seu aplicativo React Native | Emerson Stark | Sciencx | https://www.scien.cx/2021/12/29/detectando-root-e-jail-broken-no-seu-aplicativo-react-native/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.