Fermer

octobre 4, 2024

Amélioration de la sécurité des applications dans React Native : JailMonkey, obfuscation de code et stockage sécurisé

Amélioration de la sécurité des applications dans React Native : JailMonkey, obfuscation de code et stockage sécurisé


À l’ère numérique d’aujourd’hui, la sécurisation des applications mobiles est une préoccupation majeure, en particulier lorsqu’il s’agit de données utilisateur sensibles. Avec l’augmentation rapide des menaces telles que l’ingénierie inverse et l’accès non autorisé aux données, il devient essentiel pour les développeurs d’adopter des stratégies efficaces pour protéger leurs applications. Dans ce blog, nous explorerons comment améliorer la sécurité dans Applications natives React en tirant parti d’outils tels que JailMonkey, en mettant en œuvre l’obscurcissement du code et en utilisant des solutions de stockage sécurisées.

1. Détecter les problèmes de sécurité des appareils avec JailMonkey

PrisonMonkey est une puissante bibliothèque React Native conçue pour détecter les menaces de sécurité potentielles sur l’appareil d’un utilisateur. Il permet de vérifier si l’appareil est jailbreaké (iOS) ou rooté (Android), aidant ainsi les développeurs à protéger leurs applications contre les appareils compromis.

Pourquoi utiliser JailMonkey ?

Certaines applications, notamment celles traitant des données sensibles, doivent garantir qu’elles s’exécutent dans des environnements sécurisés. JailMonkey aide à identifier les risques, en garantissant que votre application ne s’exécute pas sur un appareil jailbreaké ou rooté, ce qui pourrait l’exposer à des menaces pour l’intégrité des données.

Voici ce que JailMonkey vous aide à réaliser :

  • Identifiez les appareils jailbreakés ou rootés pour iOS et Android.
  • Détecter les emplacements fictifsune fonctionnalité souvent utilisée en mode développeur.
  • Détecter l’utilisation du stockage externe (Android uniquement), où les applications peuvent s’exécuter sur des cartes SD externes non sécurisées.

Installation:

yarn add jail-monkey
# or
npm install jail-monkey

Exemple d’utilisation :

import JailMonkey from 'jail-monkey';
import RNExitApp from 'react-native-exit-app';

const checkJailMonkey = useCallback(() => {
  const isJailBroken = JailMonkey.isOnExternalStorage() || JailMonkey.isJailBroken();
  if (isJailBroken && !__DEV__) {
    Alert.alert(
      textString.securityWarning,
      textString.jailBrokenWarning,
      [{ text: 'OK', onPress: () => RNExitApp.exitApp() }],
      { cancelable: false }
    );
  }
}, []);

useEffect(() => {
  checkJailMonkey();
}, []);

Cette configuration garantit que si un appareil est identifié comme compromis, l’application affichera un avertissement et se fermera, empêchant ainsi toute utilisation ultérieure dans des environnements dangereux.

2. Renforcer la sécurité avec l’obscurcissement du code natif de React

Qu’est-ce que l’obscurcissement du code ?

L’obscurcissement du code est une technique utilisée pour transformer le code dans un format difficile à lire ou à comprendre. Cela ajoute une couche de protection supplémentaire pour empêcher l’ingénierie inverse et le vol de propriété intellectuelle. Dans React Native, l’obscurcissement du code peut être appliqué à JavaScript ainsi qu’au code natif Android et iOS.

2.1 Obscurcir le code JavaScript natif de React

L’obscurcissement de JavaScript dans React Native peut être réalisé en utilisant le Plugin Métro. Voici comment procéder :

a) Installez le plugin Metro :
npm i -D obfuscator-io-metro-plugin
# or
yarn add -D obfuscator-io-metro-plugin
b) Modifier metro.config.js:
const jsoMetroPlugin = require("obfuscator-io-metro-plugin")(
  {
    compact: false,
    sourceMap: false, 
    controlFlowFlattening: true,
    controlFlowFlatteningThreshold: 1,
    numbersToExpressions: true,
    simplify: true,
    stringArrayShuffle: true,
    splitStrings: true,
    stringArrayThreshold: 1,
  },
  {
    runInDev: false, 
    logObfuscatedFiles: true, 
  }
);

module.exports = {
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
  ...jsoMetroPlugin, // Add this line to your Metro configuration
};

Note: Ajouter .jso fichiers à .gitignore pour les empêcher d’être engagés dans le contrôle de version.

2.2 Obscurcir le code Android

Pour Android, l’obscurcissement du code est obtenu en utilisant R8. R8 permet à la fois la réduction et l’obscurcissement du code, réduisant ainsi la taille de l’application tout en protégeant le code.

a) Configurer build.gradle:
def enableProguardInReleaseBuilds = true

buildTypes {
    release {
        debuggable false
        shrinkResources enableProguardInReleaseBuilds
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
    }
}
b) Mise à jour proguard-rules.pro:
-keep class io.invertase.firebase.** { *; }
-dontwarn io.invertase.firebase.**

-keep class com.awrostamani.BuildConfig { *; }
-keep class com.swmansion.reanimated.** { *; }
-keep class com.facebook.react.turbomodule.** { *; }
-keep public class com.horcrux.svg.** {*;}

Si votre application plante après avoir activé ProGuard, recherchez Crashlytics pour la bibliothèque problématique et ajoutez les règles appropriées dans proguard-rules.pro.

2.3 Obscurcir le code iOS

Actuellement, il n’existe pas de bibliothèque intégrée pour obscurcir le code iOS dans React Native. Cependant, vous pouvez explorer des packages externes à cet effet, comme indiqué dans ce fil de discussion StackOverflow.

3. Stockage des données sensibles en toute sécurité

Les données sensibles telles que les jetons, les informations d’identification des utilisateurs et autres informations privées doivent être stockées en toute sécurité. React Native fournit à cet effet d’excellentes bibliothèques comme MMKV et Trousseau.

Conclusion

Sécuriser votre Application React Native il ne s’agit pas seulement de mettre en œuvre des mécanismes de chiffrement ou d’authentification : il s’agit d’une approche globale qui inclut la détection des appareils compromis, la dissimulation de votre code et le stockage sécurisé des données sensibles. En utilisant des outils tels que JailMonkey, en appliquant des techniques d’obfuscation de code et en tirant parti d’options de stockage sécurisées telles que MMKV et Trousseau, vous pouvez garantir que votre application reste protégée contre les menaces potentielles.

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link