Cross-site scripting (XSS)
Vid XSS blir externt innehåll körbar kod i webbläsaren. Avgörande är hur applikationen för in indata på sina sidor.
Cross-site scripting, förkortat XSS, är en attack där extern kod körs i webbläsaren i en drabbad webbplats kontext. Applikationen för in opålitliga data på en sida så att webbläsaren behandlar dem som körbart innehåll. Koden kan exempelvis ändra sidan som visas eller skicka förfrågningar med den inloggade personens behörigheter.
En kommentar i projektportalen
En fiktiv projektportal lagrar kommentarer i fältet noteText och visar dem senare för andra teammedlemmar. Fältet är avsett för vanlig text. Om innehållet förs in som HTML utan lämpliga kontroller kan särskilt utformade indata föra in körbart innehåll. Att lagra kommentaren i den egna databasen gör den inte tillförlitlig för senare visning. Även värden från anslutna system måste hanteras efter var de ska visas.
Om kommentaren bara ska vara text använder applikationen en lämplig textutmatning eller ramverkets säkra standardvisning. Om formaterad HTML medvetet tillåts behövs en underhållen lösning för HTML-rensning med fastställt tillåtet innehåll.
Utmatningskontexten bestämmer skyddet
MDN och OWASP skiljer på hantering av text, HTML, attribut och andra utmatningskontexter. Kodning som passar vanlig HTML-text är inget universellt skydd för JavaScript eller URL:er. Enbart indatavalidering ersätter inte skyddet vid utmatning.
En Content Security Policy kan dessutom begränsa vilken kod som körs. Den ersätter varken säkra utmatningsställen eller nödvändig HTML-rensning. Portalexemplet illustrerar denna skillnad; det beskriver inget genomfört säkerhetstest.
Källor
Relaterade begrepp
- FrontendFrontend är gränssnittet som människor använder. Användbar återkoppling i webbläsaren ersätter inte avgörande kontroller på servern.
- JavaScriptJavaScript är ett programmeringsspråk för applikationslogik i och utanför webbläsaren. Uppgiften skiljer sig från HTML och CSS.
- HTMLHTML beskriver webbinnehållets struktur och betydelse. Det skiljer exempelvis mellan rubriker, tabeller och inmatningsfält.
- DataminimeringDataminimering begränsar personuppgifter till vad som är lämpligt, relevant och nödvändigt för ett bestämt ändamål.
- Policy för datalagringEn policy för datalagring anger syfte, start, varaktighet och slut för lagringen. Raderingsjobb och kopior måste ingå i den tekniska lösningen.
- Envelope-krypteringEnvelope-kryptering skiljer datanyckeln från den nyckel som skyddar den. Den krypterade filen och inpackade datanyckeln behöver hanteras tillsammans.
Ditt projekt med ASES
Beskriv ditt projekt för oss. Vi hör av oss med en första bedömning.