Erreichen

Grow

Manage

Automate

Erreichen

Grow

Manage

Automate

IP-Whitelist für API-Schlüssel

E-Mail

1 min read

IP-Whitelist für API-Schlüssel

E-Mail

1 min read

IP-Whitelist für API-Schlüssel

Es gibt viele Möglichkeiten, die Authentifizierung in einem API-first-Produkt wie SparkPost zu gestalten, und diejenige, die wir frühzeitig gewählt haben, ist die Verwendung von API-Schlüsseln. Das Einfügen Ihres API-Schlüssels als rohe Autorisierungs-Header oder über die Standard-HTTP Basic Auth macht es sehr einfach, unsere APIs zu nutzen. API-Schlüssel wie diese sind ein gängiger Standard für Webservices, aber wie sicher ist dieses System?

Es gibt viele Möglichkeiten, Authentifizierung in einem API-first-Produkt wie SparkPost zu implementieren, und diejenige, die wir früh gewählt haben, ist die Verwendung von API-Schlüsseln. Die Einbindung Ihres API-Schlüssels als eine rohe Authorization-Header oder über standardmäßige HTTP Basic Auth macht es sehr einfach, unsere APIs zu nutzen. Solche API-Schlüssel sind ein gängiger Standard für Webservices, aber wie sicher ist dieses System?

Die Risiken

Bei der Nutzung eines Webdienstes, wenn ein Angreifer Ihren API-Schlüssel erlangt, kann er in Ihrem Namen handeln und Dinge tun wie (in unserem Fall):

  • ihre E-Mails kostenlos über Ihr Konto senden

  • Ihre Empfängerliste herunterladen und an Spammer weitergeben (falls sie nicht selbst Spammer sind)

  • ihre Vorlagen bearbeiten, um Phishing-Links einzufügen

  • Spam oder Phishing in Ihrem Namen senden

Jedes dieser Ergebnisse könnte Ihrem Ruf und Ihrem Geschäft erheblich schaden, und im Fall von Phishing könnte es potenziell direkt Ihren Endbenutzern Schaden zufügen. Deshalb ist es äußerst wichtig sicherzustellen, dass niemand Ihren API-Schlüssel entdecken kann.

Die Chancen

Habe ich bruteforce gehört? Unsere API-Schlüssel sind zufällig generierte, 40-stellige hexadezimale Zeichenfolgen. Das ergibt insgesamt 1.4615e+48 API-Schlüssel. Wenn alle 3 Milliarden Computer und Smartphones auf der Welt 100 API-Schlüssel pro Sekunde ausprobieren würden, vorausgesetzt, unsere Server würden das zulassen, würde es mehr als 150.000.000.000.000.000.000.000.000.000 Jahre dauern, um alle möglichen API-Schlüssel durchzugehen. Daher macht es keinen Sinn, den API-Schlüssel mit Brute-Force anzugreifen.

Wie kann also jemand Ihren API-Schlüssel finden? Da der Schlüssel als Header übergeben wird, kann er mit Man-in-the-Middle-Angriffen gelesen werden. Sie sollten also immer sicherstellen, dass Ihr Client beim Verbinden mit unseren APIs die SSL-Zertifikate überprüft (das ist ein Hauptgrund, warum wir https für API-Verbindungen verlangen). Außerdem, wenn Sie unachtsam mit der Nutzung von öffentlichen Code-Repositories wie github sind, kann Ihr API-Schlüssel leicht in der Wildnis landen. Dies ist kein akademisches Problem: Es gibt bekannte Bots, die github durchsuchen, um API-Schlüssel zu finden, und es hat erfolgreiche Angriffe über diesen Vektor gegeben.

Habe ich bruteforce gehört? Unsere API-Schlüssel sind zufällig generierte, 40-stellige hexadezimale Zeichenfolgen. Das ergibt insgesamt 1.4615e+48 API-Schlüssel. Wenn alle 3 Milliarden Computer und Smartphones auf der Welt 100 API-Schlüssel pro Sekunde ausprobieren würden, vorausgesetzt, unsere Server würden das zulassen, würde es mehr als 150.000.000.000.000.000.000.000.000.000 Jahre dauern, um alle möglichen API-Schlüssel durchzugehen. Daher macht es keinen Sinn, den API-Schlüssel mit Brute-Force anzugreifen.

Wie kann also jemand Ihren API-Schlüssel finden? Da der Schlüssel als Header übergeben wird, kann er mit Man-in-the-Middle-Angriffen gelesen werden. Sie sollten also immer sicherstellen, dass Ihr Client beim Verbinden mit unseren APIs die SSL-Zertifikate überprüft (das ist ein Hauptgrund, warum wir https für API-Verbindungen verlangen). Außerdem, wenn Sie unachtsam mit der Nutzung von öffentlichen Code-Repositories wie github sind, kann Ihr API-Schlüssel leicht in der Wildnis landen. Dies ist kein akademisches Problem: Es gibt bekannte Bots, die github durchsuchen, um API-Schlüssel zu finden, und es hat erfolgreiche Angriffe über diesen Vektor gegeben.

Habe ich bruteforce gehört? Unsere API-Schlüssel sind zufällig generierte, 40-stellige hexadezimale Zeichenfolgen. Das ergibt insgesamt 1.4615e+48 API-Schlüssel. Wenn alle 3 Milliarden Computer und Smartphones auf der Welt 100 API-Schlüssel pro Sekunde ausprobieren würden, vorausgesetzt, unsere Server würden das zulassen, würde es mehr als 150.000.000.000.000.000.000.000.000.000 Jahre dauern, um alle möglichen API-Schlüssel durchzugehen. Daher macht es keinen Sinn, den API-Schlüssel mit Brute-Force anzugreifen.

Wie kann also jemand Ihren API-Schlüssel finden? Da der Schlüssel als Header übergeben wird, kann er mit Man-in-the-Middle-Angriffen gelesen werden. Sie sollten also immer sicherstellen, dass Ihr Client beim Verbinden mit unseren APIs die SSL-Zertifikate überprüft (das ist ein Hauptgrund, warum wir https für API-Verbindungen verlangen). Außerdem, wenn Sie unachtsam mit der Nutzung von öffentlichen Code-Repositories wie github sind, kann Ihr API-Schlüssel leicht in der Wildnis landen. Dies ist kein akademisches Problem: Es gibt bekannte Bots, die github durchsuchen, um API-Schlüssel zu finden, und es hat erfolgreiche Angriffe über diesen Vektor gegeben.

IP-Whitelisting zur Rettung

Wenn Sie einen API-Schlüssel erstellen, können Sie jetzt eine Liste von IPs angeben, die zur Verwendung dieses Schlüssels berechtigt sind. Sie können mehrere IPs sowie IP-Blöcke mit der CIDR-Notation angeben, sodass Sie Ihre Server nicht einzeln auflisten müssen. Wenn der API-Schlüssel verwendet wird, sei es für REST-APIs oder SMTP, werden wir die verbindende IP mit dieser Liste abgleichen, um den Zugriff zu erlauben oder zu verweigern.

Mit dieser Funktion können selbst bei Auffinden oder Diebstahl Ihres API-Schlüssels nur Ihre Server diesen verwenden. Angesichts der Risiken und wie einfach es ist, diese Funktion einzurichten, empfehlen wir nachdrücklich allen unseren Kunden, diese Funktion zu nutzen.

Letzte Worte

Einige persönliche Empfehlungen zur Sicherheit:

  • Bewahren Sie Ihre API-Schlüssel nicht im Code auf. Es hat viele Vorteile, sie als Umgebungsvariablen zu halten, wie es Heroku tut.

  • Sie können eine unbegrenzte Anzahl von API-Schlüsseln erstellen, und es ist für die Sicherheit am besten, die Verantwortlichkeiten auf mehrere API-Schlüssel zu verteilen, anstatt nur einen Allzweck-Schlüssel zu verwenden. Dadurch können Sie auch unterschiedliche IP-Whitelists pro Schlüssel haben, für eine noch bessere Trennung der Aufgaben.

  • Wenn Sie mit Dritten arbeiten, teilen Sie nicht Ihren API-Schlüssel, sondern erstellen Sie einen neuen für sie, mit nur den erforderlichen Berechtigungen, und an ihre IPs gebunden.

  • Da API-Schlüssel nur über die Benutzeroberfläche erstellt werden können, ist das Aktivieren der Zwei-Faktor-Authentifizierung auf Ihrem SparkPost-Konto ein Muss und dauert nur 2 Minuten.

Lassen Sie uns Sie mit einem Bird-Experten verbinden.
Erleben Sie die volle Macht des Bird in 30 Minuten.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Unternehmen

Newsletter

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Lassen Sie uns Sie mit einem Bird-Experten verbinden.
Erleben Sie die volle Macht des Bird in 30 Minuten.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Unternehmen

Newsletter

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Lassen Sie uns Sie mit einem Bird-Experten verbinden.
Erleben Sie die volle Macht des Bird in 30 Minuten.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

R

Erreichen

G

Grow

M

Manage

A

Automate

Unternehmen

Newsletter

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.