
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à
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