Autorizzazione IP per chiavi API

Uccello

19 ago 2015

Email

1 min read

Autorizzazione IP per chiavi API

Conclusioni principali

    • Le chiavi API sono potenti credenziali — se compromesse, gli aggressori possono inviare email, rubare dati o impersonare il tuo marchio.

    • Forzare una chiave esadecimale di 40 caratteri è praticamente impossibile; le vere minacce provengono dall'esposizione (attacchi MITM, repository di codice non sicuri, credenziali trapelate).

    • Usa sempre HTTPS e convalida i certificati SSL per prevenire l'intercettazione delle tue chiavi API.

    • La whitelist degli IP aggiunge un livello critico di protezione limitando l'uso di una chiave a IP specifici o intervalli di IP.

    • Anche se un aggressore ruba la tua chiave API, non può usarla a meno che non si stia collegando da un IP approvato.

    • Il supporto CIDR rende facile autorizzare intere reti senza elencare ogni server.

    • Evita di incorporare chiavi API nel codice — usa invece variabili d'ambiente o soluzioni di gestione dei segreti sicure.

    • Crea più chiavi API a campo ristretto invece di una singola chiave “do-everything” — ciascuna con permessi limitati e la propria whitelist.

    • Per integrazioni di terze parti, crea chiavi dedicate con concessioni e IP limitati.

    • Abilita l'autenticazione a due fattori sul tuo account poiché le chiavi API possono essere create solo tramite l'interfaccia utente.

    • Rivedi, ruota e ritira regolarmente le chiavi per mantenere una forte sicurezza operativa.

Q&A Highlights

  • Che cos'è il whitelisting IP?

    È una funzione di sicurezza che limita l'uso della chiave API a indirizzi IP specifici o a intervalli di IP.

  • Perché SparkPost/Bird utilizza le chiavi API per l'autenticazione?

    Le chiavi API sono semplici, ampiamente adottate e funzionano perfettamente con le API REST e SMTP.

  • Cosa succede se qualcuno ruba la mia API key?

    Potrebbero inviare email per tuo conto, scaricare elenchi di destinatari, modificare modelli o inviare phishing/spam che danneggiano il tuo brand.

  • Le chiavi API possono essere attaccate con forza bruta?

    Praticamente impossibile. Una stringa esadecimale di 40 caratteri ha ~1,46e48 combinazioni — attaccarla con la forza bruta richiederebbe più tempo dell'età dell'universo.

  • Quindi come fanno gli attaccanti normalmente a ottenere le chiavi API?

    Attacchi man-in-the-middle (se SSL non è verificato), chiavi esposte in repository pubblici di GitHub, o log che perdono accidentalmente le chiavi.

  • Come aiuta l'IP whitelisting?

    Anche se un aggressore ruba la tua chiave, non funzionerà a meno che non si stiano connettendo da un IP approvato.

  • Posso inserire nella whitelist intere reti?

    Sì, tramite la notazione CIDR — ideale per server bilanciati, VPN o intervalli di uffici statici.

  • Il whitelisting si applica sia a REST che a SMTP?

    Sì, l'IP della richiesta in arrivo deve corrispondere alla tua whitelist.

  • Quanti IP o intervalli posso mettere nella whitelist?

    Quanti ne hai bisogno — più IP individuali o blocchi.

  • Dovrei utilizzare un solo API key per tutto?

    No. Crea chiavi separate per diversi sistemi, team o fornitori. Questo migliora la sicurezza e rende le chiavi più facili da ruotare o revocare.

  • Dove dovrei conservare API keys?

    Utilizzare le variabili di ambiente — non inserire mai direttamente le chiavi nei file sorgente o nei repository pubblici.

  • Ulteriori best practice di sicurezza?

    Attiva sempre la 2FA sul tuo account SparkPost/Bird e crea chiavi dedicate per terze parti con autorizzazioni minime e le loro whitelist.

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

Altre notizie

Leggi di più da questa categoria

A person is standing at a desk while typing on a laptop.

La piattaforma nativa AI completa che si adatta al tuo business.

© 2025 Bird

A person is standing at a desk while typing on a laptop.

La piattaforma nativa AI completa che si adatta al tuo business.

© 2025 Bird