Hvad er subresource integrity?
En relativt moderne webkonvention – Subresource Integrity – tillader din HTML at garantere, at enhver tredjeparts JavaScript, den bruger, er, hvad den forventer.
Dette er en sikkerhedsforanstaltning, der forhindrer skade, hvis det tredjeparts script bliver hacket.
For eksempel, forestil dig, hvis Google Analytics blev hacket, og deres JavaScript blev ændret. Hver hjemmeside, der bruger GA, ville pludselig køre uventet kode, der (for eksempel) kunne være mining af kryptovaluta eller lignende.
Subresource integrity er, hvor du tager normal HTML, der indlæser JavaScript, som dette:
<script src="<https://example.com/example-framework.js>"></script>
Og du udvider det ved at tilføje et integrity
attribut, som er en kryptografisk hash, der bruges til at validere, at den JavaScript, den indlæser, er, hvad der forventes:
<script src="<https://example.com/example-framework.js>" integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC" crossorigin="anonymous"></script>
integrity
koden skal opdateres, hver gang JavaScript opdateres. Det er dette krav, der gør det vanskeligt at understøtte.
Hvorfor understøttes det ikke generelt af analyseudbydere?
På tidspunktet for skrivningen er vi ikke opmærksomme på nogen større analyseudbyder, der understøtter SRI som standard, inklusive:
Google Analytics
Adobe Analytics
Silktide Analytics
Siteimprove Analytics
Hovedårsagen er, fordi det underliggende script ofte ændres, og når det ændres, skal HTML'en, der peger på det, opdateres, ellers vil det stoppe med at virke.
Analyse kode opdateres normalt ret regelmæssigt for at inkorporere nye funktioner, rette fejl og adressere nye browserkapaciteter eller inkompatibiliteter.
Folk har bedt om, at Google Analytics og andre understøtter dette i årevis, i øjeblikket uden held.
Hvad kan du gøre med Silktide Analytics?
Hvis SRI er vigtigt for dig, foreslår vi følgende løsning:
Konfigurer analyse præcis som du vil have det først. Silktide gemmer din analysekonfiguration inde i din analyse JavaScript-fil, så du vil fastsætte disse indstillinger, før du begynder at bruge det. I de fleste tilfælde vil den eneste indstilling, du vil bekymre dig om, være listen over "Tilladte URL'er", der vises under Indstillinger > Generelt.
Download din Silktide Analytics scriptfil. Da din JavaScript-fil vil være specifik for din web ejendom og indeholder konfiguration for din web ejendom, er der ikke en 'standard' Silktide JavaScript-fil, du kan kopiere. Du kan få URL'en til din JavaScript inde i Silktide ved at se din analyse ejendom, gå til Indstillinger > Installation, og se efter
src
attributten i eksempel koden.Upload den downloadede JavaScript til dine egne servere eller CDN.
Brug denne SRI Hash generator eller denne guide til at generere din integritetshash.
Tilføj JavaScript-snippet fra tidligere (se ovenfor) til din hjemmeside, men:
Opdater
src
til at pege på din nye URL, hvor du hoster scriptet.Tilføj den nye
integrity
attribut, du genererede.Tilføj
crossorigin="anonymous"
.
Hvad med opdateringer?
På nuværende tidspunkt er der ingen automatiseret mekanisme til at modtage opdateringer eller meddelelser om opdateringer til vores analyse script.
Dette er fordi (a) det opdateres hver gang du ændrer din analyse konfiguration og (b) vi implementerer opdateringer til kundescripts på en distribueret måde (dvs. patches til vores script implementeres gradvist over flere dage).
Men:
Alle scripts er designet til at være bagudkompatible, hvis dette nogensinde ændres, vil vi underrette alle kunder via e-mail
Opdateringer er generelt relativt sjældne (kvartalsvis)
Generelt kan du sikkert hoste den faste version af analyse scriptet og kun sigte på at opdatere det, hvis du har brug for at foretage en opdatering til din analyse konfiguration (f.eks. ændre URL'erne på din hjemmeside). Hvis større ny funktionalitet eller bagud inkompatible ændringer frigives, vil vi underrette dig.
Fremtidige planer
Vi overvejer at tilføje native support for SRI. Dette er ikke garanteret, men vi værdsætter ønsket om det. Ingen andre, vi kender, har gjort dette, det er ret involveret, og der er nogle brugervenlighedsmæssige afvejninger.
Vi ville introducere versioneret JavaScript for dig at hoste (dvs. hver version af din analyse ville blive hostet for evigt, nye udgivelser ville have en ny URL)
Analyse ville tilføje en mulighed for at aktivere SRI. Aktivering af dette ville:
Ændre deres HTML-snippet til at inkludere automatiserede SRI-attributter og pege på en statisk fil, der mangler dynamisk konfiguration; den dynamiske konfiguration ville blive flyttet ind i snippet
Underrette brugeren om at opdatere deres HTML-snippet, hvis de ændrer nogen konfigurationsmuligheder, der kræver det
Anmode om eventuelle e-mailadresser for at blive underrettet, når opdateret analyse er tilgængelig; vi ville automatisk e-maile dem, når mindre og større opdateringer sker.