Was ist Subresource Integrity?
Ein relativ modernes Web-Konzept – Subresource Integrity – ermöglicht es Ihrem HTML, zu garantieren, dass jegliches Drittanbieter-JavaScript, das es verwendet, das ist, was es erwartet.
Dies ist eine Sicherheitsmaßnahme, die Schäden verhindert, wenn dieses Drittanbieter-Skript gehackt wird.
Stellen Sie sich zum Beispiel vor, Google Analytics würde gehackt und deren JavaScript geändert. Jede Website, die GA verwendet, würde plötzlich unerwarteten Code ausführen, der (zum Beispiel) Kryptowährung schürfen oder Ähnliches tun könnte.
Subresource Integrity ist, wenn Sie normales HTML verwenden, das JavaScript lädt, wie dieses:
<script src="<https://example.com/example-framework.js>"></script>
Und Sie erweitern es, indem Sie ein integrity
-Attribut hinzufügen, das ein kryptografischer Hash ist, der verwendet wird, um zu validieren, dass das geladene JavaScript das Erwartete ist:
<script src="<https://example.com/example-framework.js>" integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC" crossorigin="anonymous"></script>
Der integrity
-Code muss jedes Mal aktualisiert werden, wenn das JavaScript aktualisiert wird. Diese Anforderung macht es schwierig, es zu unterstützen.
Warum wird es von Anbietern von Analysediensten nicht allgemein unterstützt?
Zum Zeitpunkt des Schreibens sind uns keine großen Anbieter von Analysediensten bekannt, die SRI standardmäßig unterstützen, einschließlich:
Google Analytics
Adobe Analytics
Silktide Analytics
Siteimprove Analytics
Der Hauptgrund ist, dass das zugrunde liegende Skript oft geändert wird, und wenn es geändert wird, muss das HTML, das darauf verweist, aktualisiert werden, oder es wird nicht mehr funktionieren.
Der Code für Analysen wird normalerweise ziemlich regelmäßig aktualisiert, um neue Funktionen zu integrieren, Fehler zu beheben und neue Browserfähigkeiten oder -inkompatibilitäten zu adressieren.
Menschen haben seit Jahren darum gebeten, dass Google Analytics und andere dies unterstützen, bisher ohne Erfolg.
Was können Sie mit Silktide Analytics tun?
Wenn SRI für Sie wichtig ist, schlagen wir den folgenden Workaround vor:
Konfigurieren Sie die Analysen zuerst genau so, wie Sie es möchten. Silktide speichert Ihre Analysekonfiguration in Ihrer JavaScript-Datei für Analysen, daher sollten Sie diese Einstellungen festlegen, bevor Sie sie verwenden. In den meisten Fällen wird die einzige Einstellung, die Sie interessiert, die Liste der „Erlaubten URLs“ sein, die unter Einstellungen > Allgemein erscheint.
Laden Sie Ihre Silktide Analytics-Skriptdatei herunter. Da Ihre JavaScript-Datei spezifisch für Ihre Web-Eigenschaft ist und Konfigurationen für Ihre Web-Eigenschaft enthält, gibt es keine „Standard“-Silktide-JavaScript-Datei, die Sie kopieren können. Sie können die URL Ihres JavaScripts in Silktide erhalten, indem Sie Ihre Analyse-Eigenschaft anzeigen, gehen Sie zu Einstellungen > Installation, und suchen Sie nach dem
src
-Attribut des Beispielcodes.Laden Sie das heruntergeladene JavaScript auf Ihre eigenen Server oder Ihr CDN hoch.
Verwenden Sie diesen SRI-Hash-Generator oder diese Anleitung, um Ihren Integritätshash zu generieren.
Fügen Sie das JavaScript-Snippet von oben (siehe oben) zu Ihrer Website hinzu, aber:
Aktualisieren Sie das
src
, um auf Ihre neue URL zu verweisen, wo Sie das Skript hosten.Fügen Sie das neue
integrity
-Attribut hinzu, das Sie generiert haben.Fügen Sie
crossorigin="anonymous"
hinzu.
Was ist mit Updates?
Derzeit gibt es keinen automatisierten Mechanismus, um Updates oder Benachrichtigungen über Updates zu unserem Analyseskript zu erhalten.
Dies liegt daran, dass (a) es jedes Mal aktualisiert wird, wenn Sie Ihre Analysekonfiguration ändern, und (b) wir Updates für Kundenskripte auf verteilte Weise bereitstellen (d.h. Patches für unser Skript werden über mehrere Tage hinweg schrittweise bereitgestellt).
Jedoch:
Alle Skripte sind so konzipiert, dass sie abwärtskompatibel sind. Wenn sich dies jemals ändert, werden wir alle Kunden per E-Mail benachrichtigen.
Updates sind im Allgemeinen relativ selten (vierteljährlich)
Im Allgemeinen können Sie die feste Version des Analyseskripts sicher hosten und nur dann ein Update anstreben, wenn Sie Ihre Analysekonfiguration aktualisieren müssen (z.B. die URLs Ihrer Website ändern). Wenn wesentliche neue Funktionen oder nicht abwärtskompatible Änderungen veröffentlicht werden, werden wir Sie benachrichtigen.
Zukünftige Pläne
Wir erwägen, native Unterstützung für SRI hinzuzufügen. Dies ist nicht garantiert, aber wir schätzen das Interesse daran. Niemand sonst, den wir kennen, hat dies getan, es ist ziemlich aufwendig, und es gibt einige Kompromisse in Bezug auf die Benutzerfreundlichkeit.
Wir würden versioniertes JavaScript einführen, das Sie hosten können (d.h. jede Version Ihrer Analysen würde für immer gehostet, neue Versionen hätten eine neue URL)
Analysen würden eine Option hinzufügen, um SRI zu aktivieren. Wenn Sie dies aktivieren, würde:
Ihr HTML-Snippet geändert, um automatisierte SRI-Attribute einzuschließen und auf eine statische Datei zu verweisen, die keine dynamische Konfiguration enthält; die dynamische Konfiguration würde in das Snippet verschoben
Der Benutzer benachrichtigt, sein HTML-Snippet zu aktualisieren, wenn er Konfigurationsoptionen ändert, die dies erfordern
Nach E-Mail-Adressen gefragt, die benachrichtigt werden sollen, wenn aktualisierte Analysen verfügbar sind; wir würden sie automatisch per E-Mail benachrichtigen, wenn kleinere und größere Updates erfolgen.