Skip to content
IRC-Coding IRC-Coding
API Security Best Practices TLS OAuth2 Rate Limiting Eingabevalidierung

API Security Best Practices: APIs schützen, absichern und betreiben

Lerne API Security Best Practices: Authentifizierung, TLS, Eingabevalidierung, Rate Limiting, Logging, Fehlerbehandlung und Schutz vor gängigen Angriffen.

S

schutzgeist

2 min read
API Security Best Practices: APIs schützen, absichern und betreiben

API Security Best Practices

Sichere APIs erfordern mehr als nur Authentifizierung: Eingabevalidierung, Verschlüsselung, Rate Limiting, Logging und ein durchdachtes Fehlerverhalten gehören ebenso dazu.

Kompakte Beschreibung

API Security Best Practices sind bewährte Maßnahmen, die Du anwenden solltest, um Schnittstellen vor unbefugtem Zugriff, Datenlecks, Manipulation und Ausnutzung zu schützen. Dazu gehören die konsequente Verwendung von HTTPS, starke Authentifizierung und Autorisierung, sorgfältige Eingabevalidierung, Rate Limiting, Schutz vor Injection-Angriffen, korrekte Fehlerbehandlung ohne Interna, Logging und Monitoring, sowie ein regelmäßiges Sicherheitsmanagement. APIs sind oft direkt aus dem Internet erreichbar und damit ein attraktives Ziel für Angreifer. Deshalb müssen Sicherheitsmaßnahmen von Beginn an in Architektur und Implementierung verankert werden und nicht als nachträglicher Schutz gedacht werden. Eine solide API-Sicherheit kombiniert technische, organisatorische und prozessuale Maßnahmen.

Wichtige Komponenten

HTTPS und TLS

Alle API-Kommunikation muss über HTTPS erfolgen. TLS schützt vor Abhörung, Manipulation und Man-in-the-Middle-Angriffen. Du solltest aktuelle TLS-Versionen verwenden, schwache Cipher Suites deaktivieren und Zertifikate regelmäßig erneuern. HSTS Header zwingen Clients dazu, HTTPS zu verwenden.

Authentifizierung und Autorisierung

Jeder Endpunkt, der sensitive Daten oder Aktionen bereitstellt, muss authentifiziert und autorisiert sein. Verwende moderne Standards wie OAuth2 mit OpenID Connect, kurzlebiges JWTs oder API Keys mit begrenztem Scope. Autorisierung muss immer serverseitig geprüft werden, niemals nur im Client.

Eingabevalidierung

Jede Eingabe gilt als potenziell schädlich. Du musst Daten auf Typ, Länge, Format, Bereich und Zeichensatz prüfen, bevor Du sie verarbeitest. Verwende Whitelisting statt Blacklisting. Validierung sollte an der API-Grenze und an den wichtigsten Stellen im Backend erfolgen.

Rate Limiting und Throttling

Rate Limiting begrenzt die Anzahl der Anfragen pro Client und Zeitraum. Throttling reduziert die Rate bei Spitzenlast. Beide Maßnahmen schützen vor Brute-Force-Angriffen, Überlastung und ungewolltem Scraping. Konfiguriere passende Limits und kommuniziere sie über Header wie X-RateLimit-Remaining.

Schutz vor Injection

Injection-Angriffe wie SQL Injection, NoSQL Injection, Command Injection und XPath Injection entstehen, wenn Eingaben ungeprüft in Befehle oder Abfragen eingebaut werden. Verwende parametrisierte Abfragen, ORMs und Escaping, um diese Angriffe zu verhindern.

Fehlerbehandlung ohne Interna

Fehlermeldungen sollten hilfreich für Entwickler sein, aber keine internen Details wie Datenbanknamen, Pfade, Stacktraces oder Systemversionen preisgeben. Interne Informationen gehören in Logs, nicht in API-Antworten. Verwende einheitliche Fehlerformate wie RFC 7807 Problem Details.

Logging und Monitoring

Logge alle relevanten Sicherheitsereignisse, wie erfolgreiche und fehlgeschlagene Anmeldungen, Berechtigungsverletzungen, ungewöhnliche Traffic-Muster und Fehler. Logs sollten Zeitstempel, IP-Adresse, Request-ID und Nutzerkontext enthalten. Monitoring-Systeme sollten Alerts bei verdächtigen Mustern auslösen.

API Versionierung und Deprecation

Sicherheitsupdates und Änderungen müssen über Versionsverwaltung kommuniziert werden. Alte Versionen sollten nach ausreichender Vorwarnzeit abgeschaltet werden. Deprecation und Sunset Header informieren Clients automatisch über das Ende einer Version.

CORS

Cross-Origin Resource Sharing sollte restriktiv konfiguriert werden. Erlaube nur vertrauenswürdige Ursprünge, limitiere erlaubte Methoden und Header und vermeide Wildcards für sensible Endpunkte. Falsche CORS-Konfigurationen können zu unbefugtem Zugriff führen.

Sicherheitsbewusste Konfiguration

Server und Frameworks sollten mit sicheren Defaults konfiguriert werden. Deaktiviere ungenutzte Features, setze sichere Header wie Content-Security-Policy, X-Content-Type-Options und X-Frame-Options, und vermeide die Anzeige von Versionsinformationen. Regelmäßige Updates und Patches sind Pflicht.

Penetrationstests und Audits

APIs sollten regelmäßig auf Schwachstellen geprüft werden. Statische und dynamische Analysen, Dependency-Scans, Penetrationstests und Red Team Exercises helfen, Sicherheitslücken früh zu erkennen. Berücksichtige dabei auch OWASP API Security Top 10.

Praxisbeispiel

Ein Online-Shop sichert seine Bestellungs-API mit mehreren Schichten:

POST /api/v2/orders
Host: shop.example.com
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
X-Request-ID: req-123456

{
  "customerId": 123,
  "items": [
    { "productId": 42, "quantity": 2 }
  ]
}

Sicherheitsmaßnahmen auf Serverseite:

  • TLS 1.3 erzwingt HTTPS.
  • Der Bearer Token wird validiert und die Scope read:orders write:orders geprüft.
  • customerId und quantity werden auf Typ, Länge und Wertebereich validiert.
  • Rate Limiting erlaubt maximal 10 Bestellungen pro Minute pro Kunde.
  • SQL Injection wird durch parametrisierte Abfragen verhindert.
  • Fehlerantworten enthalten keine Interna, sondern RFC 7807 Problem Details.
  • Alle Anfragen werden mit Request-ID und Ergebnis geloggt.
  • CORS erlaubt nur die Domain shop.example.com.

FAQ: API Security Best Practices

1. Warum ist HTTPS für APIs Pflicht?

HTTPS schützt vor Abhörung, Manipulation und Man-in-the-Middle-Angriffen. Ohne TLS können Token, Daten und Credentials leicht aus dem Netzwerkverkehr gelesen werden.

2. Was ist OWASP API Security Top 10?

OWASP API Security Top 10 ist eine Liste der kritischsten Sicherheitsrisiken für APIs, wie Broken Object Level Authorization, Broken Authentication und Excessive Data Exposure.

3. Warum muss Authorization serverseitig erfolgen?

Clients können manipuliert werden. Der Server ist der einzige vertrauenswürdige Ort, um Berechtigungen durchzusetzen. Frontend-Prüfungen dienen nur der Benutzerfreundlichkeit.

4. Was ist Broken Object Level Authorization?

Broken Object Level Authorization bedeutet, dass ein Endpunkt nicht prüft, ob der authentifizierte Nutzer auch berechtigt ist, auf eine bestimmte Ressource zuzugreifen. Das führt zu IDOR-Schwachstellen.

5. Was ist IDOR?

IDOR steht für Insecure Direct Object Reference. Ein Angreifer kann auf Objekte zugreifen, indem er IDs in URLs oder Parametern manipuliert, weil keine Berechtigungsprüfung stattfindet.

6. Was ist Excessive Data Exposure?

Excessive Data Exposure bedeutet, dass eine API mehr Daten liefert als der Client benötigt. Angreifer können diese zusätzlichen Felder auswerten, um weitere Angriffe zu planen.

7. Was sind Injection-Angriffe?

Injection-Angriffe nutzen unsichere Eingaben, um Befehle oder Abfragen zu manipulieren. SQL Injection, NoSQL Injection und Command Injection sind gängige Formen. Parametrisierte Abfragen und Validierung schützen dagegen.

8. Was ist Rate Limiting?

Rate Limiting begrenzt die Anzahl der Anfragen pro Zeitraum. Es schützt vor Brute-Force-Angriffen, Überlastung und Missbrauch und verbessert die Stabilität der API.

9. Was sind sicherheitsrelevante Header?

Sicherheitsrelevante Header sind unter anderem HSTS, Content-Security-Policy, X-Content-Type-Options, X-Frame-Options und Referrer-Policy. Sie reduzieren Angriffsflächen im Browser und bei API-Clients.

10. Was ist ein API Gateway?

Ein API Gateway ist eine zentrale Schicht, die Routing, Authentifizierung, Rate Limiting, Logging und weitere Sicherheitsfunktionen übernimmt. Es entkoppelt Clients von Backend-Services.

11. Warum sollte man keine sensiblen Daten in URLs übertragen?

URLs können in Logs, Browser-History und Referrer-Headern landen. Sensible Daten wie Token, Passwörter oder IDs gehören in den Header oder Body, nicht in die URL.

12. Was ist Content Security Policy?

Content Security Policy ist ein HTTP-Header, der angibt, welche Ressourcen der Browser laden darf. Er schützt vor Cross-Site-Scripting und anderen Inhaltsinjektionen, besonders bei Webanwendungen.

13. Was ist ein Security Audit?

Ein Security Audit ist eine systematische Prüfung der Sicherheit einer API oder Anwendung. Es umfasst Code-Review, Konfigurationsprüfung, Penetrationstests und Bewertung von Prozessen.

14. Was ist Dependency Scanning?

Dependency Scanning prüft verwendete Bibliotheken und Frameworks auf bekannte Sicherheitslücken. Tools wie Snyk, OWASP Dependency-Check oder GitHub Dependabot helfen, verwundbare Abhängigkeiten zu finden.

15. Was sind minimale Berechtigungen?

Minimale Berechtigungen bedeutet, dass Nutzer, Clients und Services nur die Rechte erhalten, die sie für ihre Aufgabe wirklich benötigen. Das reduziert das Schadenspotential bei Sicherheitsvorfällen.

Quellen

  1. https://owasp.org/API-Security/editions/2023/en/0x11-t10/
  2. https://datatracker.ietf.org/doc/html/rfc9110
  3. https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html

Buchempfehlungen zur API-Sicherheit

Wenn Du Dich weiter mit API Security, Softwaresicherheit und Best Practices beschäftigen möchtest, empfehlen wir Dir die folgenden Bücher:

Keine Bücher für Kategorie "security" gefunden.

Zurück zum Blog
Share:

Ähnliche Beiträge