Ein großer Teil des modernen Internets funktioniert auf der Grundlage von APIs. Bei der API-Sicherheit geht es um den Schutz von APIs vor Angriffen und Datenschutzverletzungen.
Nach Lektüre dieses Artikels können Sie Folgendes:
Ähnliche Inhalte
Abonnieren Sie theNET, Cloudflares monatliche Zusammenfassung der beliebtesten Einblicke in das Internet!
Link zum Artikel kopieren
Eine Anwendungsprogrammierschnittstelle (API) ist ein Weg für eine Software, mit einer anderen Software zu interagieren. Wenn ein Programm oder eine Anwendung eine API besitzt, können externe Clients Dienste von ihr anfordern.
Bei der API-Sicherheit geht es darum, APIs vor Angriffen zu schützen. Genauso wie Anwendungen, Netzwerke und Server angegriffen werden können, können auch APIs einer Reihe verschiedener Bedrohungen zum Opfer fallen.
API-Sicherheit ist eine Kernkomponente der Sicherheit von Webanwendungen. Die meisten modernen Webanwendungen funktionieren nur über APIs, und APIs stellen ein zusätzliches Risiko für eine Anwendung dar, da sie Außenstehenden den Zugriff ermöglichen. Vergleichen Sie dies mit einem Unternehmen, das sein Büro für die Öffentlichkeit zugänglich macht: Wenn mehr Personen das Gebäude betreten, darunter einige Unbekannte, erhöht sich das Risiko für die Mitarbeiter des Unternehmens. Ähnlich verhält es sich mit einer API, die es Außenstehenden ermöglicht, ein Programm zu nutzen, was ein größeres Risiko für die Infrastruktur des API-Dienstes bedeutet.
API-Sicherheitsstrategien helfen, diese und andere Risiken zu bekämpfen.
Starke Authentifizierungs- und Autorisierungsmaßnahmen sorgen dafür, dass Daten nicht nach außen dringen und nur autorisierte Clients API-Anfragen stellen. DDoS-Schutz und Durchsatzbegrenzung können DDoS-Angriffe abwehren. Schemavalidierung und der Einsatz einer Web Application Firewall (WAF) können die Ausnutzung von Sicherheitslücken verhindern.
Durchsatzbegrenzung legt eine Obergrenze fest, wie oft jemand eine Aktion innerhalb eines bestimmten Zeitraums wiederholen kann. Wenn ein API-Client die Anzahl der zulässigen Anfragen überschreitet, wird die Durchsatzbegrenzung weitere Anfragen von ihm verwerfen oder für eine gewisse Zeit blockieren.
DDoS-Abwehr hilft, DoS- und DDoS-Angriffe anzuhalten. Bei einem DDoS-Angriff versucht ein Angreifer, eine API mit vielen Anfragen in kurzer Zeit zu überwältigen. Oft kommen diese Anfragen von mehreren verschiedenen Quellen.
Durchsatzbegrenzung und DDoS-Abwehr sind für APIs aus mehreren Gründen wichtig:
Wer die Sicherheitslücke ausnutzen will, muss die böswilligen API-Anfragen so strukturieren, dass die API auf eine Weise reagiert, die von ihren Architekten nicht beabsichtigt war. API-Entwickler können solche böswilligen Anfragen auf verschiedene Weise blockieren. Zwei der wichtigsten sind:
Das Schema einer API beschreibt das erwartete Verhalten einer API: die Art der Anfragen, die sie erhalten sollte, und die Art der Antworten, die sie geben sollte. Ungültige Anfragen, die nicht mit dem Schema übereinstimmen, können zu unerwarteten Verhaltensweisen der API führen, was möglicherweise ein Datenleck zur Folge hat. Die Schemaüberprüfung identifiziert ungültige Anfragen und Antworten. Durch das Blockieren ungültiger Antworten können API-Entwickler einige Arten von Angriffen vermeiden und Datenlecks verhindern.
Eine WAF funktioniert wie eine herkömmliche Firewall, indem sie einige Netzwerkanfragen und -antworten blockiert und andere durchlässt. Sie tut dies auf der Grundlage einer Reihe von Regeln: Wenn eine Anfrage oder eine Antwort gegen eine Regel verstößt oder einer Regel entspricht, wird sie blockiert. Eine WAF wird vor einer API oder einer Webanwendung eingesetzt und überwacht den HTTP-Traffic.
Sie können WAF-Regeln einrichten, die Anfrage- und Antwortmuster blockieren, die auf eine Sicherheitslücke abzielen. WAF-Regeln können auch Anfragen von bestimmten IP-Adressen blockieren, was hilft, Bot-Angriffe und andere Angreifer anzuhalten.
Die Authentifizierung stellt sicher, dass API-Anfragen von einer legitimen Quelle stammen. Die Autorisierung teilt dem API-Server mit, ob der anfragende Client berechtigt ist, die angeforderten Daten zu erhalten.
Angenommen, Alice erstellt eine API und Bob entwickelt eine Webanwendung, die die API von Alice verwendet. Wenn Bobs Anwendung eine API-Anfrage an die API von Alice sendet, fügt er der Anfrage ein Label mit der Aufschrift „Das kommt von Bob“ hinzu. Dadurch wird Bobs Anfrage authentifiziert, sodass der API-Server von Alice weiß, dass er die Anfrage als legitim behandeln muss.
Der API-Server von Alice überprüft auch, welche Berechtigungen Bob hat. Wenn Bobs Anfrage sich auf Daten bezieht, die in der API von Alice mit dem Label „Bob kann das sehen“ versehen sind, erfüllt der Server die Anfrage. In der API von Alice kann es jedoch einen Datenbereich geben, der mit dem Label "nicht für Bob" gekennzeichnet ist, und der Server sollte eine Anfrage für diese Daten nicht erfüllen, wenn Bob der Anfragende ist. Aus diesem Grund ist die Autorisierung so wichtig.
(In Wirklichkeit würde Bob API-Anfragen mit einem Schlüssel oder einer anderen Form der Authentifizierung versehen, nicht nur mit einem Label, auf dem steht „Das ist von Bob“).
Es gibt mehrere Authentifizierungsmethoden für APIs. Die gängigsten sind:
Dem Kunden wird ein Schlüssel zugewiesen – eine eindeutige Zeichenfolge, die nur er und der API-Dienst kennen. Der Schlüssel wird an jede API-Anfrage angehängt. Der API-Server sucht nach dem Schlüssel, wenn er eine API-Anfrage erhält, um sicherzustellen, dass sie von einem authentifizierten Client stammt.
Der Nachteil dieser Authentifizierungsmethode ist, dass ein Angreifer, wenn der Schlüssel gestohlen wird, sich damit als legitimer Client ausgeben und dann eine Vielzahl von Angriffen durchführen kann. Es ist wichtig, Anfragen und Antworten an und von einer API mit einem Verschlüsselungsprotokoll wie Transport Layer Security (TLS) zu verschlüsseln – auf diese Weise wird der Schlüssel auf seinem Weg durch das Internet nicht im Klartext offengelegt.
API-Anfragen können die üblichen Anmeldedaten für Benutzernamen und Kennwort zur Authentifizierung über eine Methode namens HTTP-Authentifizierung verwenden. Bei der HTTP-Authentifizierung werden ein Benutzername und ein Passwort verschlüsselt und dem HTTP-Header für alle API-Anfragen hinzugefügt. Der Server kann diese Anmeldedaten mit den Anmeldedaten der zugelassenen Clients abgleichen, um die Anfragen zu authentifizieren.
Dieser Ansatz bringt alle Herausforderungen mit sich, die normalerweise mit Passwörtern verbunden sind: Passwörter können verloren gehen, geleaked, gestohlen, erraten oder an nicht vertrauenswürdige Parteien weitergegeben werden. Außerdem sind Passwörter unter anderem Gegenstand von Credential Stuffing und Brute-Force-Angriffen.
Anstatt eine Authentifizierung direkt vom Client zu verlangen, kann ein API-Server mit Hilfe des OAuth-Protokolls ein Authentifizierungs-Token von einem vertrauenswürdigen Authentifizierungsserver erhalten. Um die API zu nutzen, meldet sich ein Nutzer bei einem Drittanbieterdienst an, anstatt sich direkt bei der API anzumelden. Wie die Methode mit Benutzernamen und dem Kennwort ist auch diese Authentifizierung anfällig für Credential Stuffing und andere Angriffe.
TLS ist das Verschlüsselungsprotokoll, das beim Laden von Webseiten eine verschlüsselte, authentifizierte Verbindung zwischen Client und Server herstellt. TLS kann auch beide Enden einer API-Verbindung verifizieren und authentifizieren.
Bei mutual TLS (mTLS) verfügen sowohl der Client als auch der Server über ein TLS-Zertifikat. Sie authentifizieren sich gegenseitig mit diesen Zertifikaten und stellen so sicher, dass beide die sind, die sie vorgeben zu sein, ohne sich auf Passwörter oder andere Authentifizierungsmethoden verlassen zu müssen.
Die Implementierung von mTLS kann jedoch eine Herausforderung darstellen: Alle API-Endpunkte und -Clients benötigen legitime TLS-Zertifikate, deren Durchsetzung und Pflege schwierig sein kann.
Cloudflare API Gateway bietet mehrere API-Sicherheitsmerkmale von einem Dashboard aus, um vor den üblichen API-Sicherheitsrisiken zu schützen. API Gateway umfasst:
Erfahren Sie mehr über API Gateway oder API-Sicherheitslösungen.