- TL;DR: Statt API-Aufrufe von HTTP auf HTTPS umzuleiten, sollte ein Fehler signalisiert werden. HTTP sollte vollständig deaktiviert oder eine eindeutige HTTP-Fehlerantwort zurückgegeben werden, und API-Schlüssel, die über unverschlüsselte Verbindungen gesendet wurden, sollten widerrufen werden. Leider tun das derzeit viele bekannte API-Anbieter nicht.
Hintergrund
- Wenn Webbrowser eine HTTP-URL aufrufen, leitet der Dienst die Anfrage oft auf eine HTTPS-Seite um.
- Der anfängliche HTTP-Traffic ist unverschlüsselt und daher anfällig für Man-in-the-Middle-(MITM)-Angriffe.
- Technologien wie HSTS (HTTP Strict Transport Security) wurden eingeführt, um die Sicherheit zu erhöhen.
Das Risiko eines einfachen Tippfehlers
- Bei der Integration mit einer Drittanbieter-API wurde während der Arbeit versehentlich die API-Basis-URL mit
http:// statt https:// eingetragen.
fetch in Node.js folgt stillschweigend der Weiterleitung zu HTTPS.
- Der API-Schlüssel wurde im Klartext übertragen, wodurch ein Sicherheitsrisiko entstehen konnte.
- Der Fehler wurde im Code-Review entdeckt und behoben.
Das Fail-fast-Prinzip
- Wenn eine API HTTP-Anfragen auf HTTPS umleitet, kann ein Tippfehler leicht unbemerkt bleiben.
- Es ist besser, dem Fail-fast-Prinzip zu folgen: Unverschlüsselte API-Aufrufe sollten eindeutig fehlschlagen.
- Am besten deaktiviert man die HTTP-Schnittstelle des API-Servers oder gibt für HTTP-Anfragen eine Fehlermeldung zurück.
Beispiele anderer APIs
- Mehrere bekannte APIs geben für HTTP-Anfragen einen 403-Fehler zurück oder haben die HTTP-Schnittstelle deaktiviert.
- Einige APIs leiten jedoch weiterhin von HTTP auf HTTPS um.
Warum Best Practices nötig sind
- Bei nutzerorientierten Anwendungen ist die Umleitung von HTTP auf HTTPS üblich.
- Im Fall von APIs kann eine Umleitung von HTTP auf HTTPS jedoch eher schädlich sein.
- Sicherheitsprojekte wie OWASP brauchen klare Richtlinien für APIs.
Fazit
- APIs sollten unverschlüsselte Anfragen klar fehlschlagen lassen, statt sie von HTTP auf HTTPS umzuleiten.
- API-Schlüssel, die über unverschlüsselte Verbindungen gesendet werden, sollten sofort widerrufen werden.
- API-Sicherheits-Best-Practices müssen aktualisiert werden, um klare Richtlinien bereitzustellen.
Meinung von GN⁺
- Notwendigkeit stärkerer Sicherheit: API-Sicherheit ist äußerst wichtig, und eine Umleitung von HTTP auf HTTPS kann Sicherheitslücken verursachen.
- Fail-fast-Prinzip: Es ist wichtig, dem Fail-fast-Prinzip zu folgen, damit Fehler früh in der Entwicklung entdeckt und behoben werden können.
- Aktualisierung der Best Practices: Sicherheitsprojekte wie OWASP sollten klare Richtlinien zur API-Sicherheit bereitstellen.
- Automatischer Widerruf von Schlüsseln: API-Schlüssel, die über unverschlüsselte Verbindungen gesendet wurden, sollten automatisch widerrufen werden.
- An anderen APIs orientieren: Es ist sinnvoll, Sicherheitspraktiken anderer APIs als Referenz zu nutzen, um die eigene API-Sicherheit zu verbessern.
5 Kommentare
Das scheint ein Bereich zu sein, der gesetzlich reguliert werden sollte.
Erst mal als Notiz ... Keine HTTPS-Weiterleitungen bei APIs
Technisch ist das zwar korrekt,
aber bei den meisten Unternehmenskunden gibt es aus Sicherheitsgründen die Vorgabe, bei HTTP-Zugriffen grundsätzlich auf HTTPS umzuleiten.
Außerdem vermeiden sie es, ihren eigenen Kunden überhaupt Fehlermeldungen anzuzeigen, daher ist das eher eine Geschichte aus einer anderen Welt, wenn man nicht den eigenen Dienst betreibt, sondern als Lieferant auftritt..
Ups, die KI hat so einen Fehler gemacht, haha. Ich habe es korrigiert.
Hacker-News-Kommentar