Wie funktioniert die Implementierung von Subresource Integrity (SRI) zur Absicherung von CDN-basierten Assets?

Subresource Integrity (SRI) verhindert, dass manipulierte Dateien von einem Content Delivery Network (CDN) in den Browser des Nutzers geladen werden. Wir setzen hierbei auf kryptografische Hash-Funktionen, um die Integrität externer Ressourcen wie JavaScript-Dateien oder CSS-Stylesheets zu verifizieren.

Die technische Umsetzung erfolgt über das integrity-Attribut innerhalb des <script>- oder <link>-Tags. Der Browser berechnet beim Download der Datei den Hash-Wert des Inhalts und vergleicht diesen mit dem im Attribut hinterlegten Wert. Stimmen die Werte nicht überein, wird die Ressource aus Sicherheitsgründen nicht ausgeführt.

Die Implementierung folgt diesem technischen Ablauf:

  1. Hash-Generierung: Die Datei wird mit einem Algorithmus (üblicherweise SHA-384) gehasht. Dies geschieht entweder über Kommandozeilen-Tools wie OpenSSL oder automatisierte Build-Tools.
  2. Präfix-Zuweisung: Der resultierende Hash wird mit dem verwendeten Algorithmus präfixiert (z. B. sha384-).
  3. HTML-Integration: Der Wert wird im integrity-Attribut hinterlegt. Da CDN-Anfragen grenzüberschreitend sind, muss zusätzlich das crossorigin-Attribut auf anonymous gesetzt werden, um CORS-Richtlinien zu erfüllen.
AttributFunktionBeispielwert
integritySpeichert den kryptografischen Fingerabdruck der Dateisha384-oqVuAf...
crossoriginErmöglicht den Zugriff auf die Ressource via CORSanonymous
src / hrefPfad zur Ressource auf dem CDNhttps://cdn.example.com/lib.js

Im Rahmen unserer Strategien für Cloud & Digital Workplace integrieren wir die Generierung dieser Hashes direkt in die CI/CD-Pipeline. Dadurch wird sichergestellt, dass bei jedem Update einer Library der Hash automatisch aktualisiert wird, ohne dass manuelle Eingriffe im HTML-Code nötig sind.

Wir empfehlen, SRI nicht als optionales Feature, sondern als Standard für jede externe Ressource zu betrachten. Die manuelle Pflege von Hashes ist fehleranfällig und führt bei Versionssprüngen zu blockierten Assets. Eine automatisierte Integration in den Build-Prozess ist die einzige zuverlässige Methode, um Supply-Chain-Angriffe auf CDN-Ebene zu unterbinden, ohne die Verfügbarkeit der Anwendung zu gefährden.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt