WEBSTANDARDER

Nå skal det bli enklere for webutviklere å forhindre kjøring av farlige skript

Google Chrome blir trolig den første nettleseren som får støtte for Sanitizer API, som kan bidra til å stoppe forsøk på Cross-Site Scripting-angrep.

Med det nye programmeringsgrensesnittet skal utviklere på en tryggere måte kunne sette inn brukerskapt og annet upålitelig innhold i websider.
Med det nye programmeringsgrensesnittet skal utviklere på en tryggere måte kunne sette inn brukerskapt og annet upålitelig innhold i websider. Illustrasjon: Colourbox. Montasje: Digi.no
Harald BrombachHarald BrombachNyhetsleder
15. juni 2022 - 09:00

Mye av innholdet som vises på websider og i webapplikasjoner kan påvirkes eller manipuleres av andre enn nettstedeieren. I mange tilfeller er dette en «feature» og dermed ønskelig. For eksempel er det fint om innholdet i de eventuelle kommentarene til denne artikkelen faktisk vises. 

I andre tilfeller kan slik påvirkning føre til stor skade for enten nettstedet, brukerne eller begge deler. Ofte handler dette om injisering av skript- eller SQL-kode som ikke i tilstrekkelig grad renses eller escape'es før innholdet tolkes. Den uønskede koden kan komme fra for eksempel data lagret i en database, nettadressen til websiden eller fra cookies i nettleseren til brukeren. 

Slik uønsket kode kan blant annet lede til angrep av en type som kalles for Cross-Site Scripting (XSS), noe som stadig er temmelig utbredt. Dette kan blant annet brukes av angripere til å stjele fortrolig informasjon, slik som brukernavn og passord. 

Sharpext kan stjele epost-data fra nettlesere og sende det til servere i Nord-Korea.
Les også

Skadevare stjeler e-post fra Gmail i Chrome og Edge – sender videre til Nord-Korea

Dagens løsninger har svakheter

Selv om det finnes en rekke metoder og verktøy som skal kunne forhindre at dette skjer, dekker ingen alt, og de fleste har svakheter. For eksempel vil ikke løsninger som kjøres på serversiden nødvendigvis ha full oversikt over alt det som faktisk kommer til å bli vist i nettleseren, siden dette ofte kan være sammensatt av innhold fra flere ulike kilder. 

Google er i ferd med å implementere en et programmeringsgrensesnitt i Chrome som heter Sanitizer API. Trolig vil heller ikke dette dekke alle behov, men det gjør det mulig for utviklere å være sikrere på at HTML-innhold som i dag settes inn i et nytt eller eksisterende HTML-element ved å endre elementets innerHTML-verdi, kan gjøres uten risiko for at dette injiserte innholdet skal kunne kjøres som kode. I dag må utviklerne selv sørge for at dette innholdet er trygt, for eksempel med escaping eller utrenskning av potensielt skadelige deler.

Erstatter innerHTML

Det Sanitizer API tilbyr, er metode som heter setHTML(), som har mye felles med det å sette et HTML-elements innerHTML-verdi. Den bør dermed være ganske grei å ta i bruk straks nettleserne får støtte for den. 

Det setHTML også sørger for at blir gjort, er at nettleseren analyserer hele strengen som skal settes inn, fjerner de eventuelle taggene og attributtene som den vurderer som skadelige – slik som skript – uten å fjerne det som er harmløst. 

Vis mer
Nye KI-funksjoner i Android skal gjøre det vanskeligere å stjele mobilen.
Les også

Ruller ut nye Android-funksjoner: Skal bruke KI til å forhindre mobiltyveri

Nettleseren vet best

Det finnes egne biblioteker som allerede kan gjøre dette, men ifølge Sanitizer API-spesifikasjonen har dette vist seg å være en noe skjør tilnærming, blant annet siden disse bibliotekene ikke nødvendigvis gjengir en streng som HTML på akkurat samme måte som det enhver nettleser gjør – noe som også kan bli endret over tid. 

– Ting som én gang var trygge, kan ende opp som tidsinnstilte bomber basert på nye egenskaper på plattformnivået, skriver forfatterne av Sanitizer API-spesifikasjonen. 

Nettlesere har derimot ganske bra anelse om når de kommer til å kjøre kode. Sanitizer API er derfor en forbedring av dagens biblioteker ved at nettleseren læres opp til å gjengi HTML fra vilkårlige strenger på en trygg måte. Med denne tilnærmingen anses det også som mer sannsynlig at funksjonaliteten vil vedlikeholdes og oppdateres for å holde tritt med nettleserens egne endringer knyttet til tolking og gjengivelse.

Selv om Sanitizer API vil kunne brukes så enkelt som beskrevet over, er det også muligheter for å overstyre standardfunksjonaliteten, for eksempel å lage egne lister over HTML-elementer og -attributter som alltid skal tillates, blokkeres eller droppes helt. 

Kommende støtte

Chrome 102 og andre nettlesere basert på Chromium 102 har nå noe støtte for Sanitizer API-komponentene. Full støtte for selve setHTML()-metoden ventes å være inkludert i Chromium 105. Også Mozilla holder på å utstyre Firefox med støtte for Sanitizer API. Ifølge Google har Apple så langt ikke signalisert noen planer om å støtte dette.  

Artikkelen fortsetter etter annonsen
annonse
Innovasjon Norge
Da euroen kom til Trondheim
Da euroen kom til Trondheim

En temmelig oppdatert oversikt over Sanitizer API-støtten til de nyeste testversjonene av flere nettlesere er tilgjengelig på denne siden.

En ny skadevare som sprer seg via phishing kan stjele kredittkortdata og mye annet.
Les også

Ny phishing-trussel: Skadevare kan stjele «alt» på datamaskinen din

Del
Kommentarer:
Du kan kommentere under fullt navn eller med kallenavn. Bruk BankID for automatisk oppretting av brukerkonto.