Erhöhung der Sicherheit für Single Page Applications

Geschrieben von Gary Archer, Produktmarketing-Ingenieur bei Curity

In diesem digitalen Zeitalter ist eine Website, die langsam lädt, einer der Hauptfaktoren, der die Absprungrate der Benutzer erheblich erhöht. Eine schnelle Website rationalisiert den Browsing-Prozess und sorgt für ein besseres Gesamterlebnis. Unternehmen wenden viel Zeit und Geld auf, um den Wettbewerbsvorteil der Benutzeraufmerksamkeit zu erlangen. Wir alle wissen jedoch, dass es als Benutzer sehr wenig braucht, um wegzuklicken und eine andere Website oder einen anderen Dienst zu verwenden, wenn sich herausstellt, dass er reaktionsschneller und leichter verfügbar ist. Die Ladezeiten einer Website nicht ernst zu nehmen, kann Seitenaufrufe, Konversionsraten und vor allem potenzielle Einnahmen reduzieren.

Single Page Applications (SPAs) sind zur beliebtesten Methode geworden, um Websites zu erstellen, die sich für den Endbenutzer schneller anfühlen, ohne den Server jedes Mal zu treffen, wenn ein Benutzer mit einer Anwendung interagiert. Die Geschwindigkeit einer Website ist Teil der besten User Experience (UX). Entwickler haben die Kontrolle über das Browserverhalten und sind für die Verbesserung der UX verantwortlich. Der Einsatz moderner Technologien wie React hilft und führt zu einer guten Entwicklererfahrung. Abseits des traditionellen Cookie-basierten Ansatzes haben SPAs kein dediziertes Backend und verwenden stattdessen Zugriffstoken, um APIs im Namen eines authentifizierten Benutzers aufzurufen und die relevanten Daten zurückzugeben. Indem sie sicherstellen, dass Websites sehr schnell auf Aktionen von Endbenutzern reagieren, haben SPAs eine entscheidende Rolle bei der Verbesserung des Kundenerlebnisses gespielt. Die Verlagerung von der Handhabung der Autorisierung mit Cookies hin zu Zugriffstoken kann jedoch schwerwiegende Auswirkungen auf die Sicherheit haben.

Zuallererst arbeitet der Frontend-Code in einer unsicheren Umgebung: dem Browser eines Benutzers. SPAs verfügen häufig über ein Aktualisierungstoken, das Offlinezugriff auf die Ressourcen eines Benutzers gewährt und neue Zugriffstoken ohne Interaktion des Benutzers erhalten kann. Da diese Zugangsdaten von der SPA gelesen werden können, sind sie anfällig für Cross-Site-Scripting (XSS)-Angriffe, die gefährliche Auswirkungen haben können – Angreifer erhalten Zugriff auf die persönlichen Daten und Funktionen der Benutzer, auf die normalerweise nicht über die Benutzeroberfläche zugegriffen werden kann. Da der Online-Datenpool wächst und Hacker immer raffinierter werden, muss die Sicherheit ernst genommen werden, um die Informationen der Kunden und den Ruf des Unternehmens zu schützen.

Das Entwerfen von Sicherheitslösungen für SPAs ist jedoch keine leichte Aufgabe. Neben der stärksten Browsersicherheit und einfachem und zuverlässigem Code müssen Softwareentwickler überlegen, wie sie die beste Benutzererfahrung bieten – und all dies in eine Lösung packen, die überall bereitgestellt werden kann. Die Webinhalte der SPA können über ein Content Delivery Network (CDN) an vielen Standorten weltweit bereitgestellt werden. Webinhalte sind dann geografisch ziemlich nah an allen Benutzern, sodass Webdownloads schneller sind.

Die aktuelle Best Practice besteht darin, dass SPAs Token vor bösartigem Code schützen. Es gibt andere Möglichkeiten, Token zu schützen, aber die Verwendung von Token im Browser wird als weniger sicher empfunden. Der Schutz von Token kann erreicht werden, indem eine Backend-Komponente hinzugefügt wird, um Token zu handhaben und sichere Cookies an das Frontend auszugeben – oft als Backend-for-Frontend-Ansatz (BFF) bezeichnet. Viele Entwickler verwenden Website-Stacks mit einem „Web-Backend“, das sowohl statische Inhalte bereitstellt als auch sichere Cookies schreibt – was das Sicherheitsproblem im Prinzip löst. Website-Stacks sind jedoch einfach nicht für die Trennung von Web- und API-Belangen konzipiert, durch die SPAs gekennzeichnet sind.

Das Token Handler Pattern ist eine moderne Weiterentwicklung von BFF, bei der die OpenID Connect-Sicherheit API-gesteuert implementiert wird. Bei diesem Ansatz läuft die gesamte Kommunikation von der SPA zum Autorisierungsserver über den Token-Handler. Dadurch entfällt die Notwendigkeit, dass Token die SPA erreichen, wobei der Token-Handler stattdessen Sitzungscookies an die SPA ausgibt. Die Cookies werden bei Anfragen an APIs verwendet und gegen ein Zugriffstoken ausgetauscht, vorzugsweise durch ein dediziertes Plugin im API-Gateway, damit der API-Code einfach gehalten wird. Da der Token-Handler-Code nicht im Browser verfügbar ist, kann er als vertraulicher Client für die SPA fungieren, wodurch die Sicherheit der Token-Ausgabe weiter erhöht wird.

Das Ergebnis? Das Token-Handler-Pattern bietet SPAs ein Sicherheitsniveau wie normale Web-Apps, ohne dass ein unhandliches Backend zur Verarbeitung erforderlich ist. Dies bietet Sicherheit und bewahrt gleichzeitig die wesentlichen Vorteile des Kundenerlebnisses, für die SPAs respektiert werden. Und der Token-Handler-Ansatz ist flexibel: Die Implementierung kann zustandsbehaftet oder zustandslos sein, mit der Option, Token-Handler-Komponenten auf unterschiedliche Weise bereitzustellen, um sie an einzelne Websites anzupassen.

Eine sich langsam bewegende Website war früher möglicherweise erträglich. Aber um den Test der Zeit zu bestehen, sollten Leistung und Sicherheit zwei der wesentlichen Metriken sein, auf die man sich für den Geschäftserfolg im Internet konzentrieren muss. Es ist erwähnenswert, dass sich diese beiden Metriken ergänzen und niemals austauschbar verwendet werden sollten. Eine langsame Website bedeutet einen Verlust an potenziellen Einnahmen und ein niedriges Suchmaschinenranking, während eine unsichere Website Hackern die Möglichkeit bietet, Websites auszunutzen und zu zerstören, um Reputations- und Geschäftsverluste zu verursachen.

In Anbetracht der Tatsache, dass Browser Token nicht sicher speichern können, ist es klüger, sie bis auf weiteres ganz aus dem Browser herauszuhalten. Dies bedeutet, dass Sie zu Sitzungen und Cookies zurückkehren, dies jedoch auf effektivere Weise tun – was im Großen und Ganzen das ist, was das Token Handler Pattern bietet. Bis wir zu einem Stadium kommen, in dem Browser sicherer werden, habe ich keinen Zweifel daran, dass diese Lösung die beste Anordnung ist, die wir für Sicherheit und Effizienz haben.