La chiave dell'API di Google è una informazione sensibile che deve essere protetta?

7

Sto facendo uso dell'API di google per la posizione (in Android, app iOS). La chiave può essere hardcoded? O dovrebbe essere protetto? Se è sensibile, perché è sensibile e in che modo gli hacker possono sfruttarlo?

    
posta Ocelot 07.03.2014 - 00:03
fonte

2 risposte

3

L'SDK di Google Maps per iOS invia la chiave API dell'app a Google in modo tale che qualsiasi utente finale dell'app possa trovare la chiave API dell'app utilizzando un proxy HTTPS. Se ti capita di sviluppare su un Mac, puoi provarlo abbastanza facilmente usando il Charles proxy.

  1. Configura Charles come proxy per clients4.google.com. Su un Mac è necessario assicurarsi di utilizzare la "versione alternativa" con supporto proxy completo SSL scaricabile da questa pagina .

  2. Scarica e installa il certificato SSL Charles per i dispositivi iOS visitando questo link sul tuo dispositivo iOS.

  3. Configura il tuo dispositivo iOS per utilizzare un proxy HTTP (disponibile nelle opzioni avanzate per la tua rete WiFi, accessibile tramite il piccolo pulsante "i" accanto al nome della tua rete WiFi). Imposta il server proxy sull'indirizzo IP del Mac su cui è in esecuzione l'applicazione Charles e sulla porta su 8888.

  4. Esegui la tua (o qualsiasi) app iOS che utilizza l'SDK di Google Maps per iOS.

In Charles, vedrai le richieste POST uscire su clients4.google.com, dove la chiave API è visibile come parte del corpo della richiesta.

Quindi, per rispondere alle tue domande:

  1. In termini di sicurezza non ha importanza se si codifica la chiave. Qualsiasi utente finale può ottenere la chiave API delle mappe dell'app senza mai scavare nell'app stessa. In termini di convenienza, potrebbe essere preferibile scaricare la chiave API delle mappe dal proprio server in modo che se / quando è necessario aggiornare la chiave API delle mappe non sia necessario rilasciare una nuova versione dell'app client.

  2. La chiave API delle mappe non è sensibile, nel senso che Google non la considera come informazione sensibile. E infatti, anche se Google ha offuscato le chiavi inviando (diciamo) un hash alla loro API invece della chiave stessa, un determinato utente finale con un dispositivo jailbroken e un debugger potrebbe ancora ottenere la chiave API controllando il parametro che si passa a %codice%. Quindi è discutibile che ci sarebbe stato un punto in provare a trattare la chiave API come informazione sensibile.

  3. Un utente malintenzionato può sfruttare l'esposizione della chiave API facendo richieste all'API di Google Maps che sembrano provenire dalla tua app. Un gruppo di utenti malintenzionati potrebbe inviare spam all'API per utilizzare la larghezza di banda di "cortesia" della tua app o per eseguire la tua fattura con larghezza di banda se la fatturazione è abilitata per l'API di Google Maps. Se tu (o Google) stai tenendo d'occhio l'utilizzo della larghezza di banda, potresti parzialmente difendervi da tale attacco revocando e sostituendo la chiave API delle mappe quando l'utilizzo (apparente) dell'app delle punte delle API delle mappe è appannato.

risposta data 04.03.2015 - 05:08
fonte
2

La chiave può essere hardcoded?

Potresti approfondire questo? Se intendi la chiave nell'URL, beh, la creazione di una nuova chiave significherebbe cambiarla a livello di codice. Cambiando questo a livello di codice potrebbe essere evitato.

Dovrebbe essere protetto?

Nella maggior parte dei casi, la chiave, oltre alla query richiesta, è aperta. (Se invece usi POST, ci sono ancora modi per ottenere queste informazioni). Ma, fintanto che la richiesta che utilizza la tua chiave non proviene dal tuo dominio (referer HTTP), Google restituirà un errore.

In che modo gli hacker possono sfruttarlo?

Come semplice caso d'uso, supponendo che i limiti per utente non siano corretti, si potrebbe lanciare un attacco denial of service usando la chiave API accessibile.

    
risposta data 07.03.2014 - 07:26
fonte

Leggi altre domande sui tag