Una password API è sicura in un'applicazione mobile?

2

Voglio consentire ai clienti di utilizzare la nostra API nelle loro applicazioni mobili, ovvero quelle che sviluppano.

Non ho mai sviluppato per dispositivi mobili quindi non so se avere la chiave secretAPI dei client archiviata nell'app è sicura. Suppongo che saranno in grado di connettersi utilizzando SSL dall'app in modo che la trasmissione sia sicura.

Da quello che sto leggendo online ovunque suggerisco di usare oAuth. Ma oAuth richiede un accesso da parte dell'utente del cliente che non è possibile in questo caso poiché gli utenti dei clienti non hanno un account con il nostro servizio.

    
posta Guesser 27.10.2017 - 11:57
fonte

2 risposte

6

Qualsiasi cosa memorizzata su un dispositivo utente dovrebbe essere considerata leggibile da quell'utente. Questo indipendentemente dal fatto che sia archiviato nella memoria di file, nel registro del sistema operativo, nel codice compilato o anche solo tenuto nella RAM. Inoltre, non fa alcuna differenza se l'applicazione è un'app mobile, un'applicazione desktop o un'app Web (per i dati disponibili sul client).

Con il codice compilato puoi controllare direttamente il binario, usare uno strumento per decompilarlo o eseguire il codice e prendere un dump della memoria, quindi ispezionarlo.

Se desideri limitare le chiamate alla tua API esclusivamente al codice controllato dai tuoi clienti, dovranno autenticare i loro utenti e inoltrare le richieste tramite i propri server.

    
risposta data 27.10.2017 - 12:47
fonte
1

È giusto dire che ogni segreto memorizzato in un'app client è vulnerabile. I segreti memorizzati nei manifesti o incorporati nel codice sono abbastanza facili da estrarre. L'offuscamento e l'irrigidimento delle app possono renderlo più difficile. Memorizzare i segreti in file o keystore sicuri è meglio ma non è mai completamente sicuro. Se il segreto è abbastanza prezioso, può essere rubato.

Una panoramica della sicurezza dell'API mobile che inizia con le chiavi API e funziona tramite OAuth2 si trova all'indirizzo link .

OAuth2 ha più flussi in base alle tue esigenze. Il flusso più comune, la concessione del codice di autorizzazione, utilizza sia l'autenticazione del client (chiave API di pensiero) che l'autorizzazione dell'utente. Se si desidera solo l'autorizzazione del client, è possibile utilizzare un flusso di credenziali client più semplice. AppAuth è un framework OAuth disponibile per iOS e Android. Ho pubblicato una panoramica Android di AppAuth all'indirizzo link .

Per una panoramica su come i segreti possono essere compromessi in un'app Android, dai un'occhiata al link . E se vuoi vedere come rimuovere del tutto i segreti dalla tua app (richiede una demo library di terze parti), puoi lavorare attraverso link .

    
risposta data 30.10.2017 - 17:40
fonte

Leggi altre domande sui tag