2015-06-25 12 views
6

Quando si aggiunge l'autenticazione twitter per la mia app Android, andando a Twitter dev, Ero sbalordito a trovare che devo inizializzare Fabric di Twitter in questo modo:Protezione chiavi di Twitter su Android

import io.fabric.sdk.android.Fabric; 
import com.twitter.sdk.android.Twitter; 
import com.twitter.sdk.android.core.TwitterAuthConfig; 
... 

@Override 
public void onCreate() { 
    super.onCreate(); 

    TwitterAuthConfig authConfig = 
       new TwitterAuthConfig("consumerKey", 
            "consumerSecret"); 
    Fabric.with(this, new Twitter(authConfig)); 
} 

Sono ufficialmente raccomandare che Inserisco sia la chiave API Key e API Secret nella mia app come testo in chiaro. Anche in questo official sample, le chiavi vengono memorizzate in BuildConfig.

Sto usando Proguard ma anche allora, non posso garantire che un hacker determinato non sarebbe in grado di sfruttare la mia API Segreto. Le app consolidate come Quora espongono anche queste chiavi?

Qualcuno può pubblicare un esempio per superare questa vulnerabilità o fornire un argomento convincente sul motivo per cui Twitter sta facendo questo?

Al contrario, Google e Facebook mi ha richiesto solo per aggiungere un AppID, e ho dovuto hash miei certificati di firma e collegare gli hash alle rispettive applicazioni. Si tratta di livelli di magnitudine più sicuri di quelli precedenti.

+2

Alex da Fabric qui. Volevo solo espandere il motivo per cui mostriamo questo metodo in app di esempio e in parte della nostra documentazione. Gli esempi illustrano il meccanismo più semplice da integrare con i kit. Ogni squadra e organizzazione ha politiche diverse in materia di sicurezza, quindi lasciamo la decisione su come proteggere e dove archiviare le chiavi e i segreti per ogni sviluppatore. Sicuramente ti sento, e possiamo cercare di fornire documentazione su opzioni più sicure. – Alexizamerican

+0

@Alexizamerican Grazie mille per aver risposto. I tasti twitter che intendo utilizzare hanno l'accesso ** write **. Mi sembra che, non importa quanto sia sicuro, faccio queste stringhe, sto ancora spedendo la mia API di Twitter come segreta agli utenti. Non ho alcun modo garantito per risolvere questo problema di sicurezza, quindi mi chiedevo se ci fosse un altro modo per farlo. Sto bene, essendo un metodo complesso. Idealmente l'app non dovrebbe mai avere alcun accesso al mio segreto. – prakharsingh95

+0

Ciao - Anch'io sono preoccupato per questo. Sei riuscito a trovare un modo più sicuro per archiviare la chiave/coppia segreta? Mi sto anche chiedendo se integrare Twitter sia una buona idea, perché sembra completamente insicuro. – Simon

risposta

2

Proguard non offuscherà i valori letterali stringa. Invece è possibile memorizzare il segreto come una stringa crittografata (magari usando AES) e decifrare quando richiesto. In alternativa, i programmi commerciali come Stringer o Dexguard forniscono l'offuscamento della stringa.

+0

Sì, le stringhe crittografate sono più difficili da non offuscare (non sono sicuro che si tratti di una parola: P), ma poiché inserisco il codice crittografico necessario nell'app, non garantisce la sicurezza. Inoltre, se qualcuno sviluppa un exploit per estrarre le chiavi di Twitter da un'app protettiva (dex), gli darà accesso a una miriade di app di Twitter. Sembra un buco di sicurezza troppo grande. – prakharsingh95

+0

Accidenti. Non ci ho pensato. Se hai memorizzato il segreto come una matrice di caratteri (o ints?) e poi hai usato la tua logica per riprodurre la stringa, a patto che tu stia "applicando" Proguard, dovresti essere coperto. –

0

È possibile creare un file secrets.xml nella directory res/e avere costanti con tali valori e fare riferimento alla propria attività.

Problemi correlati