Subresource Integrity (SRI) erlaubt einer Seite, den erwarteten kryptografischen Hash eines externen Skripts oder Stylesheets anzugeben. Stimmen die geladenen Bytes nicht mit diesem Wert überein, verwendet der Browser die Ressource nicht.
Subresource Integrity (SRI): externe Ressourcen auf Integrität prüfen
Verstehe, wie SRI-Hashes unerwartete Änderungen an externen Skripten und Stylesheets erkennen und wo die Grenzen liegen.
Inhalt anzeigen
Der Hash gehört zur exakten Datei
SRI arbeitet auf den tatsächlichen Bytes. Schon eine kleine Änderung an der Datei erzeugt einen anderen Digest. Erzeuge den Wert deshalb aus genau der Version, die später ausgeliefert wird, zum Beispiel mit dem SRI-Hash-Generator.
SHA-256, SHA-384 und SHA-512 sind für SRI vorgesehen. Der fertige Wert steht im integrity-Attribut eines <script>- oder <link>-Elements.
Cross-Origin-Ressourcen brauchen passende CORS-Bedingungen
Bei Ressourcen von einer anderen Origin muss die Antwort so ausgeliefert werden, dass der Browser die Integritätsprüfung durchführen darf. Das crossorigin-Attribut und die CORS-Header des Servers müssen zusammenpassen.
SRI eignet sich besonders für versionierte statische Assets
SRI ist sinnvoll, wenn ein bestimmtes CDN-Skript oder Stylesheet bewusst auf eine feste Version gepinnt wird. Für häufig veränderte oder dynamisch erzeugte Ressourcen ist die Pflege deutlich schwieriger, weil bei jeder Änderung ein neuer Hash nötig wird.
Integrität ist nicht automatisch Vertrauen
SRI bestätigt, dass die geladenen Bytes den erwarteten Bytes entsprechen. Es entscheidet nicht, ob der freigegebene Code selbst sicher oder vertrauenswürdig ist. Für die grundsätzliche Bedeutung von Fingerprints siehe Hashes und Integrität; zusammen mit einer CSP kann SRI Teil einer breiteren Browser-Sicherheitsstrategie sein.
War dieser Artikel hilfreich?
Quellen und Referenzen
- W3C — Subresource Integrity (öffnet in einem neuen Tab)Seite auf Englisch
- MDN — Subresource Integrity (öffnet in einem neuen Tab)Seite auf Englisch