Prüfregel · RSC-SEC-097
Fremde Skripte ohne Subresource Integrity
Findet `<script src>` und `<link rel=stylesheet>` von öffentlichen CDNs (cdnjs, jsDelivr, unpkg, jQuery, Bootstrap …) ohne `integrity`-Attribut.
Warum das zählt
Ein Skript von einem fremden CDN läuft mit allen Rechten eurer Seite: Es sieht Formulareingaben, Sitzungen und Zahlungsfelder. Ihr vertraut damit nicht nur der Bibliothek, sondern jedem, der die Datei auf dem CDN austauschen kann — durch einen Einbruch beim Anbieter, eine übernommene Domain oder ein manipuliertes Release. Genau so lief der Angriff auf polyfill.io 2024, der über hunderttausend Seiten traf.
Subresource Integrity ist die Antwort des Browsers darauf: Ein Hash im Tag, den er vor dem Ausführen mit der geladenen Datei vergleicht. Stimmt er nicht, wird nichts ausgeführt. Für versionierte CDN-Dateien ist das eine Zeile — die meisten CDNs zeigen den fertigen Tag samt Hash an. Nicht anwendbar ist es bei Skripten, die sich selbst aktualisieren (Tag Manager, Analytics); die werden hier deshalb nicht gezählt.
Selbst nachprüfen: Quelltext öffnen und nach `<script src="https://cdn` suchen — steht im Tag kein `integrity=`, fehlt der Schutz.
Prüfstufe
So behebt ihr es
Für jede CDN-Einbindung den SRI-Hash erzeugen (`openssl dgst -sha384 -binary datei.js | openssl base64 -A`) und als `integrity`-Attribut samt `crossorigin="anonymous"` in das Tag setzen — oder die Datei selbst hosten.