Per Iniziare
Installazione
Section titled “Installazione”npm install @capgo/capacitor-is-rootnpx cap syncyarn add @capgo/capacitor-is-rootnpx cap syncpnpm add @capgo/capacitor-is-rootnpx cap syncbun add @capgo/capacitor-is-rootnpx cap syncSupporto Piattaforma
Section titled “Supporto Piattaforma”- Android: Supporto completo per rilevamento root ed emulatori
- iOS: Nessuna configurazione richiesta (il plugin è focalizzato su Android)
Esempio di Utilizzo
Section titled “Esempio di Utilizzo”import { IsRoot } from '@capgo/capacitor-is-root';
// Rilevamento root di baseconst rootResult = await IsRoot.isRooted();if (rootResult.isRooted) { console.log('Il dispositivo è rootato'); // Gestisci il dispositivo rootato in modo appropriato // Esempio: Mostra avviso, limita funzionalità o blocca l'accesso}
// Rilevamento root esteso con BusyBoxconst extendedResult = await IsRoot.isRootedWithBusyBox();if (extendedResult.isRooted) { console.log('Il dispositivo è rootato (controllo esteso)');}
// Controlla per emulatoreconst emulatorResult = await IsRoot.isRunningOnEmulator();if (emulatorResult.isEmulator) { console.log('In esecuzione su emulatore'); // Gestisci ambiente emulatore}
// Rileva app di gestione rootconst rootAppsResult = await IsRoot.detectRootManagementApps();if (rootAppsResult.hasRootApps) { console.log('App di gestione root rilevate');}
// Controlla per binario suconst suResult = await IsRoot.checkForSuBinary();if (suResult.hasSu) { console.log('Binario SU trovato sul dispositivo');}Riferimento API
Section titled “Riferimento API”isRooted()
Section titled “isRooted()”isRooted() => Promise<{ isRooted: boolean }>Esegue un rilevamento root completo utilizzando metodi predefiniti.
Ritorna: Promise<{ isRooted: boolean }>
isRootedWithBusyBox()
Section titled “isRootedWithBusyBox()”isRootedWithBusyBox() => Promise<{ isRooted: boolean }>Rilevamento root esteso inclusi controlli BusyBox.
Ritorna: Promise<{ isRooted: boolean }>
detectRootManagementApps()
Section titled “detectRootManagementApps()”detectRootManagementApps() => Promise<{ hasRootApps: boolean }>Identifica le applicazioni di gestione root installate (SuperSU, Magisk, ecc.).
Ritorna: Promise<{ hasRootApps: boolean }>
checkForSuBinary()
Section titled “checkForSuBinary()”checkForSuBinary() => Promise<{ hasSu: boolean }>Controlla la presenza del binario su nei percorsi di sistema.
Ritorna: Promise<{ hasSu: boolean }>
isRunningOnEmulator()
Section titled “isRunningOnEmulator()”isRunningOnEmulator() => Promise<{ isEmulator: boolean }>Rileva impronte digitali comuni degli emulatori Android.
Ritorna: Promise<{ isEmulator: boolean }>
Controllo di Sicurezza Completo
Section titled “Controllo di Sicurezza Completo”import { IsRoot } from '@capgo/capacitor-is-root';
async function performSecurityCheck() { const checks = { rooted: false, emulator: false, rootApps: false, suBinary: false };
try { // Esegui tutti i metodi di rilevamento const [rootResult, emulatorResult, rootAppsResult, suResult] = await Promise.all([ IsRoot.isRootedWithBusyBox(), IsRoot.isRunningOnEmulator(), IsRoot.detectRootManagementApps(), IsRoot.checkForSuBinary() ]);
checks.rooted = rootResult.isRooted; checks.emulator = emulatorResult.isEmulator; checks.rootApps = rootAppsResult.hasRootApps; checks.suBinary = suResult.hasSu;
// Determina il livello di sicurezza const securityIssues = Object.values(checks).filter(v => v).length;
if (securityIssues > 0) { console.warn(`Il dispositivo ha ${securityIssues} problema(i) di sicurezza`, checks); return { secure: false, issues: checks }; }
return { secure: true, issues: checks }; } catch (error) { console.error('Controllo di sicurezza fallito:', error); throw error; }}
// Usa nella tua appconst securityStatus = await performSecurityCheck();if (!securityStatus.secure) { // Gestisci dispositivo non sicuro showSecurityWarning(securityStatus.issues);}Tecniche di Rilevamento
Section titled “Tecniche di Rilevamento”Rilevamento Root
Section titled “Rilevamento Root”Il plugin utilizza molteplici metodi di rilevamento:
- Controlla per applicazioni di gestione root (SuperSU, Magisk, KingRoot, ecc.)
- Scansiona per proprietà di sistema sospette
- Identifica tag di build di test e flag di debug
- Valida posizioni di binari pericolosi
- Esamina permessi del percorso di sistema
- Rileva app di mascheramento root conosciute
Rilevamento Emulatore
Section titled “Rilevamento Emulatore”- Analisi dell’impronta digitale hardware
- Ispezione delle proprietà di build
- Caratteristiche specifiche dell’emulatore
- Indicatori di ambiente virtuale
Gestione dei Problemi di Sicurezza
Section titled “Gestione dei Problemi di Sicurezza”import { IsRoot } from '@capgo/capacitor-is-root';
async function handleDeviceSecurity() { const rootResult = await IsRoot.isRooted();
if (rootResult.isRooted) { // Opzione 1: Mostra avviso e continua showWarning('Il tuo dispositivo sembra essere rootato. Alcune funzionalità potrebbero essere limitate.');
// Opzione 2: Limita funzionalità disableSensitiveFeatures();
// Opzione 3: Blocca l\'accesso all\'app showBlockedScreen('Questa app non può essere eseguita su dispositivi rootati per motivi di sicurezza.'); return false; }
return true;}
function showWarning(message: string) { // Mostra dialogo di avviso user-friendly alert(message);}
function disableSensitiveFeatures() { // Disabilita elaborazione pagamenti, accesso a dati sensibili, ecc. console.log('Funzionalità sensibili disabilitate a causa di dispositivo rootato');}
function showBlockedScreen(message: string) { // Mostra schermata di blocco ed esci dall\'app alert(message);}Migliori Pratiche
Section titled “Migliori Pratiche”- Usa molteplici metodi di rilevamento per una maggiore precisione
- Implementa degradazione graduale piuttosto che bloccare completamente l’accesso
- Fornisci comunicazioni chiare all’utente riguardo ai problemi di sicurezza
- Considera l’esperienza utente quando implementi misure di sicurezza
- Mantieni il plugin aggiornato poiché i metodi di rilevamento evolvono
- Testa su dispositivi sia rootati che non rootati
- Gestisci i fallimenti di rilevamento con grazia
Considerazioni sulla Sicurezza
Section titled “Considerazioni sulla Sicurezza”- Nessun metodo di rilevamento è infallibile al 100%
- Utenti avanzati possono bypassare i meccanismi di rilevamento
- Usa in combinazione con misure di sicurezza lato server
- Considera la privacy degli utenti quando implementi controlli di sicurezza
- Segui le linee guida della piattaforma per le implementazioni di sicurezza
- Aggiornamenti regolari raccomandati poiché le tecniche di nascondimento root evolvono
Casi d’Uso
Section titled “Casi d’Uso”- App bancarie e finanziarie: Previeni l’accesso su dispositivi compromessi
- Contenuti protetti da DRM: Proteggi materiale protetto da copyright
- App enterprise: Applica politiche di sicurezza BYOD
- Elaborazione pagamenti: Assicura un ambiente di transazione sicuro
- App con dati sensibili: Proteggi informazioni confidenziali