W3C kunngjorde i forrige uke at webteknologien Subresourse Integrity er gjort til en W3C-anbefaling, altså en offisiell webstandard.
Mange websider laster ned ressurser fra mange ulike servere, for eksempel Google, Facebook eller CDN-tilbydere (Content Delivery Network). Dette kan være alt fra bilder og video til filer med JavaScript-kode. Men utgiveren av siden kan ikke garantere at tredjepartsinnholdet som vises til brukeren, er det forventede.
- Leste du denne? Første helt nye jQuery på tre år
Manipulert innhold
Ondsinnede kan ved hjelp av for eksempel man-in-the-middle-angrep eller DNS-forfalskning sørge for manipulering av tredjepartsressursene som lastes ned av selve websiden. Eventuelt kan også leverandøren av de eksterne ressursene selv være ondsinnet eller infisert.
Dette kan åpne for mange ulike typer angrep, inkludert phishing og spredning av utpressingsvare. Bruken av blant annet Content Security Policy, sikkerhetssertifikater og sikre forbindelser (HTTPS) kan motvirke en hel del av dette. Men de sjekker ikke at innholdet som forventes levert, ikke har blitt manipulert.
Og det er nettopp sikring av innholdet som er målet med den nye webstandarden. Den introduserer et nytt integrity-attributt for HTML-elementene script og link. Flere elementer kan bli inkludert i framtidige utgaver av spesifikasjonen.
Hashverdi
Det nye attributtet kan inneholde en kryptografisk hashverdi som representerer den ressurser som websideforfatteren forventer at vil bli lastet.
Hash-funksjonene SHA-256, SHA-384 og SHA-512 støttes. Hvilken som er valgt i forbindelse med en spesifikk ressurs, oppgis i begynnelsen av verdien til integrity-attributtet.
Dersom hashverdien til ressursen ikke stemmer med hashverdien som er oppgitt, vil nettlesere som støtter Subresource Integrity nekte å laste ressursen. Dette kan testes her.
Chrome og andre Blink-baserte nettlesere har hatt støtte for Subresource Integrity siden i fjor høst. Det samme har Firefox. Microsoft vurderer å støtte standarden. I WebKit-prosjektet, som Apple Safari bygger på, er det tilsynelatende svært lite aktivitet rundt et forslag om å støtte Subresource Integrity.