Zum Hauptinhalt springen
Bethemesh

SRI-Hash-Generator

Berechne den Subresource-Integrity-Wert in SHA-256, SHA-384 oder SHA-512 aus eingefügtem Inhalt, einer lokalen Datei oder einer CDN-URL und kopiere den fertigen <script>- oder <link>-Tag mit crossorigin="anonymous".

  • Zwischenablage

Dieses Widget einbetten

Passe die Darstellung an, prüfe die Vorschau und kopiere anschließend den Code.

Vorschau

Art des Einbettungscodes

Zu kopierender Code

Responsive und automatisch von Bethemesh in der Größe angepasst.

Ressource

Wird von deinem Browser geladen: Das CDN muss CORS erlauben (jsDelivr, cdnjs und unpkg tun das).

Integrität

War dieses Werkzeug hilfreich?

Wie funktioniert dieses Tool?

Dieser Generator berechnet den Subresource-Integrity-Wert (SRI) eines Skripts oder Stylesheets und erzeugt den passenden HTML-Tag. Er richtet sich an Entwickler, die Bibliotheken von einem CDN laden und wollen, dass der Browser jede veränderte Datei blockiert.

Subresource Integrity (eine W3C-Spezifikation) erlaubt es, einem <script>- oder <link rel="stylesheet">-Tag ein integrity-Attribut mit dem erwarteten Hash der Ressource hinzuzufügen. Der Wert besteht aus dem Namen des Algorithmus, einem Bindestrich und dem Base64-kodierten binären Hash: Eine Datei, die genau console.log("hello"); enthält, ergibt sha384-ym/3cF/gAcW1/eerNQGFaOSOuU2LHI6RYvChaVur/G+PkVozZ5Zo8Uu5R2S2zm7C. Beim Laden berechnet der Browser den Hash der empfangenen Bytes neu und führt das Skript nicht aus bzw. wendet das Stylesheet nicht an, wenn er nicht übereinstimmt. Erlaubt sind nur SHA-256, SHA-384 und SHA-512; SHA-384 ist die Voreinstellung, wie in den Beispielen der Spezifikation und von MDN.

Bei einer Ressource von einem anderen Origin muss der Browser die Antwort lesen können, um sie zu hashen, und dafür braucht es eine CORS-Anfrage: das Attribut crossorigin="anonymous" auf der Seite und einen Access-Control-Allow-Origin-Header vom CDN. Deshalb ergänzt das Tool crossorigin="anonymous" in den Attributen und im erzeugten Tag. Im URL-Modus lädt dein Browser die Datei direkt herunter, ohne Zwischenserver; das klappt mit CDNs, die CORS erlauben, etwa jsDelivr, cdnjs oder unpkg. Die entsprechende Berechnung auf der Kommandozeile lautet openssl dgst -sha384 -binary datei.js | openssl base64 -A.

So verwenden Sie dieses Tool

  1. Quelle wählen

    Füge den Inhalt der Datei ein, wähle eine lokale Datei oder gib die URL eines CDN ein: Im letzten Fall lädt dein Browser die Datei direkt herunter.

  2. Algorithmus und Typ festlegen

    Behalte SHA-384 als Voreinstellung oder wähle SHA-256 oder SHA-512 und gib an, ob es sich um ein Skript oder ein Stylesheet handelt.

  3. Ergebnis kopieren

    Übernimm nur den integrity-Wert, die Attribute integrity und crossorigin="anonymous" oder den vollständigen <script>- bzw. <link rel="stylesheet">-Tag.

SRI-Integrität

SRI-Integrität

integrity = Algorithmus + '-' + Base64(HASH(Bytes der Ressource))

Anwendungsfälle

Eine von jsDelivr geladene Bibliothek absichern

Gib die versionierte URL ein, zum Beispiel https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css, um den <link>-Tag mit integrity zu erhalten. Wird das CDN kompromittiert und liefert eine andere Datei, blockiert der Browser sie.

Den Hash nach einem Versions-Update erneuern

Jede neue Version einer Datei ändert ihren Hash. Berechne das integrity-Attribut neu, sobald du die versionierte URL änderst, sonst wird die Ressource in Produktion blockiert.

Eine PCI-DSS-Anforderung auf Zahlungsseiten erfüllen

PCI DSS 4.0 (Anforderung 6.4.3) verlangt, die Integrität jedes auf einer Zahlungsseite geladenen Skripts sicherzustellen. SRI ist ein gängiger Weg für Drittanbieter-Skripte mit stabilem Inhalt: Erzeuge für jedes den integrity-Wert.

Beispiele

SHA-256-Integrität des Texts abc

Eingabe

Ressource: Eingefügter Inhalt; Inhalt der Ressource (UTF-8): abc; Algorithmus: SHA-256

Ergebnis

Integrity-Wert: sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=

Tipps und bewährte Vorgehensweisen

  • Nutze immer eine URL, die auf eine exakte Version festgelegt ist: Eine „latest“- oder unversionierte URL ändert ihren Inhalt und macht den Hash beim nächsten Release ungültig.
  • Verwende SRI nicht für dynamisch erzeugte Ressourcen wie das Stylesheet von Google Fonts, dessen Inhalt je nach Browser variiert: Der Hash wäre von Besucher zu Besucher anders.
  • Hashe genau die ausgelieferte Datei: Eine minifizierte, neu komprimierte Version oder eine mit anderen Zeilenenden hat nicht denselben Hash wie die Quelldatei.

Quellen und Referenzen

Häufig gestellte Fragen

Was ist Subresource Integrity (SRI)?

Das ist eine vom W3C standardisierte Sicherheitsfunktion der Browser, die prüft, ob eine von Dritten geladene Datei verändert wurde. Du trägst den erwarteten Hash ins integrity-Attribut ein; passt die empfangene Datei nicht, wird sie weder ausgeführt noch angewendet. Das schützt vor einem kompromittierten CDN oder einer unterwegs veränderten Datei.

Soll ich SHA-256, SHA-384 oder SHA-512 wählen?

Alle drei werden akzeptiert und sind sicher. SHA-384 ist die gängigste Wahl und die Voreinstellung des Tools; SHA-512 passt ebenfalls, und SHA-256 bleibt gültig. Du kannst mehrere durch Leerzeichen getrennte Werte in integrity angeben: Der Browser nutzt dann den stärksten Algorithmus.

Warum ist crossorigin="anonymous" nötig?

Bei einer Ressource von einem anderen Origin kann der Browser den Inhalt, und damit den Hash, nur über eine CORS-Anfrage lesen. Ohne das Attribut crossorigin ist die Antwort opak, und die Ressource wird blockiert. Der Wert anonymous bedeutet, dass keine Cookies oder Zugangsdaten mitgesendet werden.

Was passiert, wenn der Hash nicht übereinstimmt?

Der Browser lehnt die Ressource ab und meldet in der Konsole einen Fehler zum integrity-Attribut. Das Skript läuft nicht oder das Stylesheet wird nicht angewendet, was die Seite kaputt machen kann. Prüfe, ob die URL versioniert ist, und erzeuge den Hash aus der tatsächlich ausgelieferten Datei neu.

Warum schlägt das Laden über eine URL fehl?

Dein Browser lädt die Datei herunter und wendet die CORS-Regeln an: Sendet der Server keinen Access-Control-Allow-Origin-Header, wird das Lesen verweigert. Dann würde SRI für diese von einer anderen Domain geladene Datei auch nicht funktionieren. Lade sie herunter und nutze den Datei-Modus, oder wähle ein CORS-fähiges CDN wie jsDelivr, cdnjs oder unpkg.

Ersetzt SRI eine Content Security Policy?

Nein, beide ergänzen sich. SRI garantiert, dass sich eine bestimmte Datei nicht geändert hat, während eine CSP festlegt, von welchen Origins Skripte kommen dürfen, und eingeschleuste Skripte blockiert. Für eine Website, die auf CDNs setzt, kombinierst du am besten eine strenge CSP mit SRI für jede Drittanbieter-Ressource.

Verwandte Werkzeuge

Werkzeuge, die diesem ähnlich sind oder es ergänzen.

Ähnliche Werkzeuge

Erstelle eine Content Security Policy Direktive für Direktive – mit HTTP-Header, Meta-Tag und Warnungen.

Sicherheit & DatenschutzDieses Werkzeug verwenden

Erzeuge HSTS, nosniff, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP und X-Frame-Options für Nginx oder Apache.

Sicherheit & DatenschutzDieses Werkzeug verwenden

Berechne MD5-, SHA-1-, SHA-256-, SHA-384- und SHA-512-Hashes eines Textes oder einer Datei auf einmal.

Sicherheit & DatenschutzEmpfohlenDieses Werkzeug verwenden