Reach

Grow

Manage

Automate

Reach

Grow

Manage

Automate

Autorizzazione IP per chiavi API

Email

1 min read

Autorizzazione IP per chiavi API

Email

1 min read

Autorizzazione IP per chiavi API

Ci sono molti modi per costruire l'autenticazione in un prodotto API-first come SparkPost, e quello che abbiamo scelto all'inizio è l'uso delle chiavi API. Iniettare la tua chiave API come intestazione di autorizzazione grezza o tramite l'autenticazione HTTP Basic standard rende molto facile utilizzare le nostre API. Le chiavi API come questa sono uno standard comune per i servizi web, ma quanto è sicuro questo sistema?

Ci sono molti modi per costruire l'autenticazione in un prodotto incentrato sugli API come SparkPost, e quello che abbiamo scelto all'inizio è l'uso delle chiavi API. Iniettare la tua chiave API come intestazione di Autorizzazione grezza o tramite HTTP Basic Auth standard rende molto facile usare le nostre API. Le chiavi API come questa sono uno standard comune per i servizi web, ma quanto è sicuro questo sistema?

I rischi

Quando si utilizza qualsiasi servizio web, se un attaccante riesce a ottenere la tua chiave API, può agire a tuo nome, e fare cose come (nel nostro caso):

  • inviare le loro email gratuitamente attraverso il tuo account

  • scaricare la tua lista di destinatari e fornirla agli spammer (se non sono loro stessi spammer)

  • modificare i tuoi modelli per inserire link di phishing

  • inviare spam o phishing a tuo nome

Ognuno di questi risultati potrebbe essere molto dannoso per la tua reputazione e per la tua attività, e nel caso di phishing potrebbe potenzialmente danneggiare direttamente i tuoi utenti finali.  Ecco perché è estremamente importante assicurarsi che nessuno possa scoprire la tua chiave API.

Le probabilità

Ho sentito bruteforce? Le nostre API key sono stringhe esadecimali generate casualmente lunghe 40 caratteri. Questo si traduce in un totale di 1.4615e+48 API key. Se tutti i 3 miliardi di computer e smartphone nel mondo stessero provando 100 api key al secondo, assumendo che i nostri server lo permettano, ci vorrebbero più di 150.000.000.000.000.000.000.000.000.000 anni per passare attraverso tutte le possibili API key. Quindi forzare brutalmente la API key non ha senso.

Quindi, come può qualcuno trovare la tua API key? Poiché la chiave viene passata come intestazione, può essere letta con attacchi man-in-the-middle, quindi dovresti sempre assicurarti che il tuo client stia controllando i certificati SSL quando si connette ai nostri APIs (questa è una ragione principale per cui richiediamo https per le connessioni API). Inoltre, se sei negligente con l'uso dei repository di codice pubblico come github, la tua API key può facilmente finire esposta al pubblico. Questo non è un problema teorico: ci sono bot noti che rastrellano github per trovare le API key, e ci sono stati attacchi riusciti attraverso quel vettore.

Ho sentito bruteforce? Le nostre API key sono stringhe esadecimali generate casualmente lunghe 40 caratteri. Questo si traduce in un totale di 1.4615e+48 API key. Se tutti i 3 miliardi di computer e smartphone nel mondo stessero provando 100 api key al secondo, assumendo che i nostri server lo permettano, ci vorrebbero più di 150.000.000.000.000.000.000.000.000.000 anni per passare attraverso tutte le possibili API key. Quindi forzare brutalmente la API key non ha senso.

Quindi, come può qualcuno trovare la tua API key? Poiché la chiave viene passata come intestazione, può essere letta con attacchi man-in-the-middle, quindi dovresti sempre assicurarti che il tuo client stia controllando i certificati SSL quando si connette ai nostri APIs (questa è una ragione principale per cui richiediamo https per le connessioni API). Inoltre, se sei negligente con l'uso dei repository di codice pubblico come github, la tua API key può facilmente finire esposta al pubblico. Questo non è un problema teorico: ci sono bot noti che rastrellano github per trovare le API key, e ci sono stati attacchi riusciti attraverso quel vettore.

Ho sentito bruteforce? Le nostre API key sono stringhe esadecimali generate casualmente lunghe 40 caratteri. Questo si traduce in un totale di 1.4615e+48 API key. Se tutti i 3 miliardi di computer e smartphone nel mondo stessero provando 100 api key al secondo, assumendo che i nostri server lo permettano, ci vorrebbero più di 150.000.000.000.000.000.000.000.000.000 anni per passare attraverso tutte le possibili API key. Quindi forzare brutalmente la API key non ha senso.

Quindi, come può qualcuno trovare la tua API key? Poiché la chiave viene passata come intestazione, può essere letta con attacchi man-in-the-middle, quindi dovresti sempre assicurarti che il tuo client stia controllando i certificati SSL quando si connette ai nostri APIs (questa è una ragione principale per cui richiediamo https per le connessioni API). Inoltre, se sei negligente con l'uso dei repository di codice pubblico come github, la tua API key può facilmente finire esposta al pubblico. Questo non è un problema teorico: ci sono bot noti che rastrellano github per trovare le API key, e ci sono stati attacchi riusciti attraverso quel vettore.

IP whitelisting al salvataggio

Quando crei una chiave API, puoi ora specificare un elenco di IP autorizzati a utilizzare questa chiave. Puoi specificare diversi IP, così come blocchi di IP, utilizzando la notazione CIDR, così non devi elencare individualmente i tuoi server. Quando la chiave API viene utilizzata, per REST API o SMTP, confronteremo l'IP di connessione rispetto a questo elenco per consentire o negare l'accesso.

Con questa funzione, anche se la tua chiave API viene trovata o rubata, solo i tuoi server potranno utilizzarla. Dati i rischi e quanto è facile configurarla, raccomandiamo vivamente a tutti i nostri clienti di usare questa funzione.

Ultime parole

Alcuni consigli personali sulla sicurezza:

  • Non conservare le chiavi API nel codice. Ci sono molti vantaggi nel mantenerle come variabili di ambiente, come fa Heroku

  • Puoi creare un numero illimitato di chiavi API ed è meglio per la sicurezza suddividere le responsabilità tra diverse chiavi API anziché una sola chiave svizzera multifunzione. Questo ti permetterebbe anche di avere diverse whitelist di IP per chiave, per una separazione ancora migliore delle responsabilità

  • Se lavori con terze parti, non condividere la tua chiave API ma crea una nuova per loro, con solo i permessi necessari, e associata ai loro IP

  • Poiché le chiavi API possono essere create solo tramite l'interfaccia utente, abilitare l'autenticazione a due fattori sul tuo account SparkPost è essenziale e richiede solo 2 minuti

Connettiamoci con un esperto di Bird.
Scopri tutta la potenza del Bird in 30 minuti.

Inviando, accetti che Bird possa contattarti riguardo ai nostri prodotti e servizi.

Puoi annullare l'iscrizione in qualsiasi momento. Consulta la Informativa sulla Privacy di Bird per i dettagli sul trattamento dei dati.

Azienda

Newsletter

Rimani aggiornato con Bird attraverso aggiornamenti settimanali nella tua inbox.

Inviando, accetti che Bird possa contattarti riguardo ai nostri prodotti e servizi.

Puoi annullare l'iscrizione in qualsiasi momento. Consulta la Informativa sulla Privacy di Bird per i dettagli sul trattamento dei dati.

Connettiamoci con un esperto di Bird.
Scopri tutta la potenza del Bird in 30 minuti.

Inviando, accetti che Bird possa contattarti riguardo ai nostri prodotti e servizi.

Puoi annullare l'iscrizione in qualsiasi momento. Consulta la Informativa sulla Privacy di Bird per i dettagli sul trattamento dei dati.

Azienda

Newsletter

Rimani aggiornato con Bird attraverso aggiornamenti settimanali nella tua inbox.

Inviando, accetti che Bird possa contattarti riguardo ai nostri prodotti e servizi.

Puoi annullare l'iscrizione in qualsiasi momento. Consulta la Informativa sulla Privacy di Bird per i dettagli sul trattamento dei dati.

Connettiamoci con un esperto di Bird.
Scopri tutta la potenza del Bird in 30 minuti.

Inviando, accetti che Bird possa contattarti riguardo ai nostri prodotti e servizi.

Puoi annullare l'iscrizione in qualsiasi momento. Consulta la Informativa sulla Privacy di Bird per i dettagli sul trattamento dei dati.

R

Raggiungi

G

Grow

M

Manage

A

Automate

Azienda

Newsletter

Rimani aggiornato con Bird attraverso aggiornamenti settimanali nella tua inbox.

Inviando, accetti che Bird possa contattarti riguardo ai nostri prodotti e servizi.

Puoi annullare l'iscrizione in qualsiasi momento. Consulta la Informativa sulla Privacy di Bird per i dettagli sul trattamento dei dati.