Cross site scripting (kort XSS) är ett av de vanligaste säkerhetsproblemen på webbsidor. XSS handlar om att bädda in HTML- eller Javascriptkod i en sajts indata och på så sätt ändra sidans funktionaliteten efter attackerarens behov.
Ofta handlar det bara om enkla sabotage, så som att förstöra webbsidans layout. Men XSS kan även användas för att stjäla information från användare. Med en kort Javascriptkod kan ett XSS-hål utnyttjas för att skicka användarens cookies till attackeraren.
En "cookiestealer"-attack som beskrivs ovan är oftast (finns undantag) inriktad på ett speciellt användarkonto. Det är i och för sig illa nog om det är administratörens konto det handlar om. Det går att nå ut till betydligt fler användare än så med XSS, nämligen genom en så kallad XSS-mask.
Ett virus som sprider sig själv från dator till dator kallas för "mask", och det är precis likadant här. En XSS-mask sprider sig från användare till användare på en sida och utför det attackeraren vill.
En oskyddad gästbok kan vara ett tänkbart mål för en attack. Besökare kan skriva inlägg och skicka iväg, datan behandlas inte alls. En helt vanlig besökare tänker antagligen inte på detta, men om en person av det lite elakare slaget skulle besöka gästboken skulle han eller hon kanske se en chans att få djävlas lite.
Personen som för attacken kan nu skriva in valfri kod i textboxen och klicka på skicka. Exempelvis skulle följande kod kunna skickas:
<script language="JavaScript">window.location="http://www.w3sidan.net";</script>
Detta skulle resultera i att alla besökare (som har Javascript aktiverat) blir skickade till w3sidan istället för att komma till gästboken. Det kan ses som en ganska lindrig attack, men ägaren till gästboken förlorar en hel del besökare och sidan får ett sämre helhetsintryck.
Då kan man fråga sig vad attackeraren tjänar på det. Svaret är kort och gott: ingenting.
Att skydda din sida och dess användare från Cross site scripting-attacker är viktigt, men inte speciellt svårt. Allting handlar i grund och botten om en sak: att aldrig släppa igenom ogranskad data.
Vad menas med det då? Jo, du måste kontrollera all data som skickas på sin sida och se efter om den innehåller några "farliga tecken" som krävs för en attack. Sådana tecken kan till exempel vara mindre- och större än-tecknet samt apostroftecknet (<, >, samt ').
Du skulle kunna förbjuda dessa "farliga tecken" helt och göra det omöjligt att använda dem. Men ibland behöver man som användare faktiskt använda dessa tecken i en helt vanlig och harmonisk text.
Så som tur är finns det funktioner som "avkodar" de farliga tecknen så de blir helt ofarliga. I PHP finns funktionen htmlentities som fungerar utmärkt. Motsvarigheten i ASP heter Server.HtmlEncode().