Whitelist IP per chiavi API

Uccello

19 ago 2015

Email

1 min read

Whitelist IP per chiavi API

Punti Chiave

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

    • Forzare una chiave esadecimale di 40 caratteri è praticamente impossibile; le minacce reali derivano 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 uno strato critico di protezione limitando l'uso di una chiave a IP specifici o a intervalli di IP.

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

    • Il supporto CIDR semplifica l'autorizzazione di intere reti senza elencare ogni server.

    • Evita di incorporare le chiavi API nel codice: utilizza variabili ambientali o soluzioni sicure di gestione dei segreti.

    • Crea più chiavi API a scopo ristretto piuttosto che una singola chiave “fai-tutto” — ciascuna con permessi limitati e la propria whitelist.

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

    • Abilita il 2FA sul tuo account poiché le chiavi API possono essere create solo tramite l'interfaccia utente.

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

Punti salienti del Q&A

  • Che cos'è il whitelisting degli IP?

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

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

    Le chiavi API sono semplici, ampiamente adottate e funzionano in modo pulito con le API REST e SMTP.

  • Cosa succede se qualcuno ruba la mia chiave API?

    Potrebbero inviare email a nome tuo, scaricare elenchi di destinatari, modificare modelli o inviare phishing/spam che danneggia il tuo marchio.

  • Le chiavi API possono essere forzate a mano?

    Praticamente impossibile. Una stringa esadecimale di 40 caratteri ha ~1.46e48 combinazioni: forzare ogni combinazione richiederebbe più tempo dell'età dell'universo.

  • Quindi, come ottengono normalmente le chiavi API gli attaccanti?

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

  • Come aiuta la whitelist di IP?

    Anche se un attaccante ruba la tua chiave, non funzionerà a meno che non si colleghi da un IP approvato.

  • Posso autorizzare intere reti?

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

  • L'esclusione si applica sia a REST che a SMTP?

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

  • Quanti IP o intervalli posso autorizzare?

    Quanti ne hai bisogno - più indirizzi IP individuali o blocchi.

  • Dovrei usare una sola chiave API per tutto?

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

  • Dove dovrei conservare le chiavi API?

    Utilizza le variabili d'ambiente: non inserire mai le chiavi direttamente nei file sorgente o nei repository pubblici.

  • Quali ulteriori pratiche di sicurezza consigliate?

    Abilita sempre la 2FA sul tuo account SparkPost/Bird e crea chiavi dedicate per parti terze con permessi minimi e le loro proprie whitelist.

Ci sono molti modi per costruire l'autenticazione in un prodotto con API first come SparkPost, e quello che abbiamo scelto fin dall'inizio è l'uso delle chiavi API. Iniettare la tua chiave API come header di Authorization raw o tramite l'autenticazione HTTP Basic standard rende molto facile utilizzare le nostre API. Le chiavi API come queste sono uno standard comune per i webservice, ma quanto è sicuro questo sistema?

Ci sono molti modi per costruire l'autenticazione in un prodotto con API first come SparkPost, e quello che abbiamo scelto fin dall'inizio è l'uso delle chiavi API. Iniettare la tua chiave API come header di Authorization raw o tramite l'autenticazione HTTP Basic standard rende molto facile utilizzare le nostre API. Le chiavi API come queste sono uno standard comune per i webservice, ma quanto è sicuro questo sistema?

Ci sono molti modi per costruire l'autenticazione in un prodotto con API first come SparkPost, e quello che abbiamo scelto fin dall'inizio è l'uso delle chiavi API. Iniettare la tua chiave API come header di Authorization raw o tramite l'autenticazione HTTP Basic standard rende molto facile utilizzare le nostre API. Le chiavi API come queste sono uno standard comune per i webservice, ma quanto è sicuro questo sistema?

I rischi

Quando si utilizza un qualsiasi webservice, se un attaccante ottiene la tua chiave API può agire per tuo conto e fare cose come (nel nostro caso):

  • inviare la propria email gratuitamente tramite il tuo account

  • scaricare la lista dei tuoi destinatari e passarla a spammer (se non sono già spammer)

  • modificare i tuoi modelli per iniettare link di phishing

  • inviare spam o phishing per tuo conto

Qualcuna di queste conseguenze potrebbe essere molto dannosa per la tua reputazione e per la tua attività, e nel caso di phishing potrebbe danneggiare direttamente i tuoi utenti finali.  Ecco perché è estremamente importante assicurarsi che nessuno possa scoprire la tua chiave API.

Quando si utilizza un qualsiasi webservice, se un attaccante ottiene la tua chiave API può agire per tuo conto e fare cose come (nel nostro caso):

  • inviare la propria email gratuitamente tramite il tuo account

  • scaricare la lista dei tuoi destinatari e passarla a spammer (se non sono già spammer)

  • modificare i tuoi modelli per iniettare link di phishing

  • inviare spam o phishing per tuo conto

Qualcuna di queste conseguenze potrebbe essere molto dannosa per la tua reputazione e per la tua attività, e nel caso di phishing potrebbe danneggiare direttamente i tuoi utenti finali.  Ecco perché è estremamente importante assicurarsi che nessuno possa scoprire la tua chiave API.

Quando si utilizza un qualsiasi webservice, se un attaccante ottiene la tua chiave API può agire per tuo conto e fare cose come (nel nostro caso):

  • inviare la propria email gratuitamente tramite il tuo account

  • scaricare la lista dei tuoi destinatari e passarla a spammer (se non sono già spammer)

  • modificare i tuoi modelli per iniettare link di phishing

  • inviare spam o phishing per tuo conto

Qualcuna di queste conseguenze potrebbe essere molto dannosa per la tua reputazione e per la tua attività, e nel caso di phishing potrebbe 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 chiavi API sono stringhe esadecimali lunghe 40 generate casualmente. Questo porta a un totale di 1,4615e+48 chiavi API. Se tutti e 3 miliardi di computer e smartphone nel mondo provassero 100 chiavi API al secondo, assumendo che i nostri server lo consentano, passare attraverso tutte le possibili chiavi API richiederebbe più di 150.000.000.000.000.000.000.000.000.000 anni. Quindi forzare la chiave API non ha semplicemente senso.

Quindi come può qualcuno trovare la tua chiave API? Poiché la chiave viene passata come intestazione, può essere letta tramite attacchi man-in-the-middle, quindi dovresti sempre assicurarti che il tuo client verifichi i certificati SSL quando si connette alle nostre API (questo è un motivo principale per cui richiediamo https per le connessioni API). Inoltre, se sei distratto nell'uso di repository di codice pubblici come github, la tua chiave API potrebbe facilmente finire esposta nel mondo. Questo non è un problema accademico: ci sono bot noti che attraversano github per trovare chiavi API, e ci sono stati attacchi di successo attraverso quel vettore.

Ho sentito bruteforce? Le nostre chiavi API sono stringhe esadecimali lunghe 40 generate casualmente. Questo porta a un totale di 1,4615e+48 chiavi API. Se tutti e 3 miliardi di computer e smartphone nel mondo provassero 100 chiavi API al secondo, assumendo che i nostri server lo consentano, passare attraverso tutte le possibili chiavi API richiederebbe più di 150.000.000.000.000.000.000.000.000.000 anni. Quindi forzare la chiave API non ha semplicemente senso.

Quindi come può qualcuno trovare la tua chiave API? Poiché la chiave viene passata come intestazione, può essere letta tramite attacchi man-in-the-middle, quindi dovresti sempre assicurarti che il tuo client verifichi i certificati SSL quando si connette alle nostre API (questo è un motivo principale per cui richiediamo https per le connessioni API). Inoltre, se sei distratto nell'uso di repository di codice pubblici come github, la tua chiave API potrebbe facilmente finire esposta nel mondo. Questo non è un problema accademico: ci sono bot noti che attraversano github per trovare chiavi API, e ci sono stati attacchi di successo attraverso quel vettore.

Ho sentito bruteforce? Le nostre chiavi API sono stringhe esadecimali lunghe 40 generate casualmente. Questo porta a un totale di 1,4615e+48 chiavi API. Se tutti e 3 miliardi di computer e smartphone nel mondo provassero 100 chiavi API al secondo, assumendo che i nostri server lo consentano, passare attraverso tutte le possibili chiavi API richiederebbe più di 150.000.000.000.000.000.000.000.000.000 anni. Quindi forzare la chiave API non ha semplicemente senso.

Quindi come può qualcuno trovare la tua chiave API? Poiché la chiave viene passata come intestazione, può essere letta tramite attacchi man-in-the-middle, quindi dovresti sempre assicurarti che il tuo client verifichi i certificati SSL quando si connette alle nostre API (questo è un motivo principale per cui richiediamo https per le connessioni API). Inoltre, se sei distratto nell'uso di repository di codice pubblici come github, la tua chiave API potrebbe facilmente finire esposta nel mondo. Questo non è un problema accademico: ci sono bot noti che attraversano github per trovare chiavi API, e ci sono stati attacchi di successo attraverso quel vettore.

Whitelist IP per il salvataggio

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

Con questa funzionalità, anche se la tua chiave API viene trovata o rubata, solo i tuoi server saranno in grado di usarla.

Minacce comuni alle chiavi API e mitigazioni

Minaccia

Descrizione

Mitigazione raccomandata

Esposizione della chiave nei repos pubblici di codice

Le chiavi API impegnate su GitHub possono essere raccolte da bot

Tieni le chiavi nelle variabili di ambiente; ruota le chiavi trapelate immediatamente

Intercettazione man-in-the-middle

Chiave API letta durante connessioni insicure

Applica sempre HTTPS e valida i certificati SSL

Chiave API rubata utilizzata dall'infrastruttura dell'attaccante

L'attaccante può inviare email, rubare dati o modificare template

Utilizza la whitelist degli IP per limitare quali IP possono utilizzare la chiave

Chiavi API “coltellino svizzero” con autorizzazioni eccessive

Una sola chiave concede troppi privilegi se compromessa

Crea più chiavi a-scopo-ridotto con concessioni limitate

Integrazioni di terze parti che abusano di una chiave condivisa

I partner esterni possono accidentalmente esporre o abusare della tua chiave

Genera chiavi dedicate per ciascun partner con IP e autorizzazioni ristrette

Data la natura dei rischi e quanto sia semplice impostarla, raccomandiamo vivamente a tutti i nostri clienti di utilizzare questa funzionalità.

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

Con questa funzionalità, anche se la tua chiave API viene trovata o rubata, solo i tuoi server saranno in grado di usarla.

Minacce comuni alle chiavi API e mitigazioni

Minaccia

Descrizione

Mitigazione raccomandata

Esposizione della chiave nei repos pubblici di codice

Le chiavi API impegnate su GitHub possono essere raccolte da bot

Tieni le chiavi nelle variabili di ambiente; ruota le chiavi trapelate immediatamente

Intercettazione man-in-the-middle

Chiave API letta durante connessioni insicure

Applica sempre HTTPS e valida i certificati SSL

Chiave API rubata utilizzata dall'infrastruttura dell'attaccante

L'attaccante può inviare email, rubare dati o modificare template

Utilizza la whitelist degli IP per limitare quali IP possono utilizzare la chiave

Chiavi API “coltellino svizzero” con autorizzazioni eccessive

Una sola chiave concede troppi privilegi se compromessa

Crea più chiavi a-scopo-ridotto con concessioni limitate

Integrazioni di terze parti che abusano di una chiave condivisa

I partner esterni possono accidentalmente esporre o abusare della tua chiave

Genera chiavi dedicate per ciascun partner con IP e autorizzazioni ristrette

Data la natura dei rischi e quanto sia semplice impostarla, raccomandiamo vivamente a tutti i nostri clienti di utilizzare questa funzionalità.

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

Con questa funzionalità, anche se la tua chiave API viene trovata o rubata, solo i tuoi server saranno in grado di usarla.

Minacce comuni alle chiavi API e mitigazioni

Minaccia

Descrizione

Mitigazione raccomandata

Esposizione della chiave nei repos pubblici di codice

Le chiavi API impegnate su GitHub possono essere raccolte da bot

Tieni le chiavi nelle variabili di ambiente; ruota le chiavi trapelate immediatamente

Intercettazione man-in-the-middle

Chiave API letta durante connessioni insicure

Applica sempre HTTPS e valida i certificati SSL

Chiave API rubata utilizzata dall'infrastruttura dell'attaccante

L'attaccante può inviare email, rubare dati o modificare template

Utilizza la whitelist degli IP per limitare quali IP possono utilizzare la chiave

Chiavi API “coltellino svizzero” con autorizzazioni eccessive

Una sola chiave concede troppi privilegi se compromessa

Crea più chiavi a-scopo-ridotto con concessioni limitate

Integrazioni di terze parti che abusano di una chiave condivisa

I partner esterni possono accidentalmente esporre o abusare della tua chiave

Genera chiavi dedicate per ciascun partner con IP e autorizzazioni ristrette

Data la natura dei rischi e quanto sia semplice impostarla, raccomandiamo vivamente a tutti i nostri clienti di utilizzare questa funzionalità.

Ultime parole

Alcuni consigli personali sulla sicurezza:

  • Non tenere le tue chiavi API nel codice. Ci sono molti vantaggi nel tenerle come variabili d'ambiente, come fa Heroku

  • Puoi creare un numero illimitato di chiavi API ed è meglio per la sicurezza suddividere le responsabilità tra più chiavi API, anziché avere solo una chiave "swiss-knife". Questo ti permetterebbe anche di avere whitelist IP diverse per ogni chiave, per una migliore separazione delle preoccupazioni

  • Se lavori con terze parti, non condividere la tua chiave API ma crea una nuova chiave per loro, con solo le autorizzazioni necessarie, e collegata ai loro IP

  • Dato che le chiavi API possono essere create solo tramite l'interfaccia utente, abilitare l'autenticazione a 2 fattori sul tuo account SparkPost è un must e richiede solo 2 minuti

Alcuni consigli personali sulla sicurezza:

  • Non tenere le tue chiavi API nel codice. Ci sono molti vantaggi nel tenerle come variabili d'ambiente, come fa Heroku

  • Puoi creare un numero illimitato di chiavi API ed è meglio per la sicurezza suddividere le responsabilità tra più chiavi API, anziché avere solo una chiave "swiss-knife". Questo ti permetterebbe anche di avere whitelist IP diverse per ogni chiave, per una migliore separazione delle preoccupazioni

  • Se lavori con terze parti, non condividere la tua chiave API ma crea una nuova chiave per loro, con solo le autorizzazioni necessarie, e collegata ai loro IP

  • Dato che le chiavi API possono essere create solo tramite l'interfaccia utente, abilitare l'autenticazione a 2 fattori sul tuo account SparkPost è un must e richiede solo 2 minuti

Alcuni consigli personali sulla sicurezza:

  • Non tenere le tue chiavi API nel codice. Ci sono molti vantaggi nel tenerle come variabili d'ambiente, come fa Heroku

  • Puoi creare un numero illimitato di chiavi API ed è meglio per la sicurezza suddividere le responsabilità tra più chiavi API, anziché avere solo una chiave "swiss-knife". Questo ti permetterebbe anche di avere whitelist IP diverse per ogni chiave, per una migliore separazione delle preoccupazioni

  • Se lavori con terze parti, non condividere la tua chiave API ma crea una nuova chiave per loro, con solo le autorizzazioni necessarie, e collegata ai loro IP

  • Dato che le chiavi API possono essere create solo tramite l'interfaccia utente, abilitare l'autenticazione a 2 fattori sul tuo account SparkPost è un must 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 completa nativa dell'IA che si espande con la tua azienda.

© 2025 Uccello

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

La piattaforma completa nativa dell'IA che si espande con la tua azienda.

© 2025 Uccello