So verwenden Sie es
- Fügen Sie den Text des Skripts oder Stylesheets in Text der Datei ein oder wählen Sie die Datei unter Oder eine Datei.
- Wählen Sie den Algorithmus. Mit Alle drei schreiben Sie je einen Wert für jeden Algorithmus.
- Tippen Sie die Adresse der Datei genau so ein, wie die Seite sie lädt. Das einzufügende Element erscheint darunter.
- Kopieren Sie den Integrity-Wert oder das Einzufügende Element in Ihre Seite. Um einen Wert zu prüfen, den Sie haben, fügen Sie ihn unter Zu prüfender Integrity-Wert ein.
So entsteht der Wert
Der Integrity-Wert ist der Name eines Hashalgorithmus, ein Bindestrich und der Digest der Datei in Base64. Der Browser hasht die genauen Bytes der Datei, daher ändert sich der Wert, wenn sich ein einziges Byte ändert. Jeder konforme Browser unterstützt sha256, sha384 und sha512 (SRI, Abschnitt 3.2). Base64 verwendet das Alphabet aus RFC 4648 mit dem Zeichen = am Ende zum Auffüllen (Abschnitt 4).
Ein Wert mit mehreren Einträgen, durch Leerzeichen getrennt, ist erlaubt (Abschnitt 3.2.1). Der Browser verwendet den stärksten Algorithmus unter den Einträgen, die er kennt, daher entscheidet sha512 über sha256.
integrity = Algorithmus + "-" + base64(digest(bytes))
- sha256: 44 Zeichen Base64 nach dem Bindestrich.
- sha384: 64 Zeichen nach dem Bindestrich.
- sha512: 88 Zeichen nach dem Bindestrich.
Was die Prüfung tut und was nicht abdeckt
Eine Prüfung gelingt, wenn die Bytes der Datei einen der Werte des stärksten Algorithmus im Attribut ergeben (SRI, Abschnitt 3.3). Ein Eintrag mit einem Algorithmus, den der Browser nicht kennt, wird übersprungen. Ist kein Eintrag mehr übrig, gelingt die Prüfung, ohne etwas zu vergleichen. Daher meldet der Rechner diesen Fall als ungeprüft.
Der Wert sagt nichts darüber, woher die Datei stammt. Er beweist, dass die Datei die Bytes hat, die gehasht wurden. Erstellen Sie den Wert bei jeder Änderung der Datei neu, etwa nach einem Update der Bibliothek, und bewahren Sie ihn am selben Ort wie das Element auf.
Der Text abc
Der Text abc sind die drei Bytes 61 62 63 in UTF-8. Wählen Sie sha256 und tippen Sie abc in das Textfeld. Der Integrity-Wert für den Text ist der in der Tabelle, und das einzufügende Element trägt ihn mit crossorigin, auf anonymous gesetzt.
| Algorithmus | Integrity-Wert für abc |
|---|---|
| sha256 | sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= |
| sha384 | sha384-ywB1P0WjXou1oD1pmsZQBycsMqsO3tFjGotgWkP/W+2AhgcroefMI1i67KE0yCWn |
Häufig gestellte Fragen
Muss ich den Wert ändern, wenn sich die Datei ändert?
Ja. Der Wert gilt für genau eine Folge von Bytes. Ein Update der Bibliothek, schon ein einziges geändertes Leerzeichen, ergibt einen anderen Wert. Die Prüfung schlägt dann fehl, bis das Attribut den neuen Wert enthält.
Welchen Algorithmus sollte ich wählen?
Jeder Browser unterstützt alle drei (SRI, Abschnitt 3.2). sha384 ist ein stärkerer Digest als sha256 und ein kürzerer Wert als sha512. Wählen Sie Alle drei, um für jeden einen Wert zu schreiben. Der Browser prüft dann den stärksten.
Warum hat der Wert einen Algorithmusnamen und einen Bindestrich?
Der Name sagt dem Browser, welchen Digest er berechnen soll. Der Bindestrich beendet den Namen, weil die Namen keinen Bindestrich enthalten. Der Base64-Wert im URL-sicheren Alphabet kann dagegen Bindestriche enthalten, wie es SRI in Abschnitt 3.5 erlaubt.
Sendet der Rechner meine Datei an einen Server?
Nein. Ihr Browser liest die Datei und hasht sie mit der Digest-Methode des Browsers (crypto.subtle). Die Seite stellt keine Netzwerkanfrage und speichert nichts, was Sie eintippen oder auswählen.
Warum enthält das einzufügende Element crossorigin?
SRI verlangt CORS für eine Ressource auf einem anderen Ursprung (Abschnitt 5.3). crossorigin mit dem Wert anonymous bittet den Browser, CORS zu verwenden. Das Element enthält es für Skripte und Stylesheets gleichermaßen.
Quellen
- W3C, Subresource Integrity (englisch, Working Draft vom 20. März 2026): Abschnitte 3.2, 3.3, 3.5 und 5.3
- RFC 4648 (englisch): The Base16, Base32, and Base64 Data Encodings, Abschnitt 4
- MDN (englisch): SubtleCrypto.digest()
Zahlen und Text zuletzt geprüft: Dienstag, 10. November 2026.