Cross-site scripting (XSS)
Bij XSS wordt externe inhoud uitvoerbare code in de browser. Doorslaggevend is hoe een applicatie invoer in haar pagina’s opneemt.
Cross-site scripting, kortweg XSS, is een aanval waarbij externe code in de browser wordt uitgevoerd binnen de context van een getroffen website. De applicatie neemt onbetrouwbare gegevens zo in een pagina op dat de browser ze als uitvoerbare inhoud behandelt. De code kan bijvoorbeeld de weergegeven pagina veranderen of verzoeken doen met de rechten van de aangemelde persoon.
Een opmerking in het projectportaal
Een fictief projectportaal bewaart opmerkingen in het veld noteText en toont ze later aan andere teamleden. Het veld is bedoeld voor gewone tekst. Wordt de inhoud zonder passende controle als HTML ingevoegd, dan kan speciaal gemaakte invoer uitvoerbare inhoud binnenbrengen. Opslag in de eigen database maakt een opmerking niet betrouwbaar voor latere weergave. Ook waarden uit gekoppelde systemen moeten worden behandeld volgens de plek waar ze verschijnen.
Moet de opmerking alleen tekst zijn, dan gebruikt de applicatie een geschikte tekstuitvoer of de veilige standaardweergave van het framework. Wordt opgemaakte HTML bewust toegestaan, dan is een onderhouden opschoningsoplossing met vastgelegde toegestane inhoud nodig.
De uitvoercontext bepaalt de bescherming
MDN en OWASP onderscheiden de verwerking van tekst, HTML, attributen en andere uitvoercontexten. Codering die past bij gewone HTML-tekst is geen algemene bescherming voor JavaScript of URL’s. Alleen invoervalidatie vervangt de bescherming bij uitvoer niet.
Een Content Security Policy kan aanvullend beperken welke code wordt uitgevoerd. Ze vervangt noch veilige uitvoerpunten, noch de noodzakelijke HTML-opschoning. Het portaalscenario verduidelijkt dit onderscheid; het beschrijft geen uitgevoerde beveiligingstest.
Bronnen
Verwante begrippen
- FrontendDe frontend is de gebruikersinterface van een toepassing. Directe feedback in de browser vervangt geen doorslaggevende controles op de server.
- JavaScriptJavaScript is een programmeertaal voor toepassingslogica, in en buiten de browser. De taak verschilt van die van HTML en CSS.
- HTMLHTML beschrijft structuur en betekenis van webinhoud. Het onderscheidt bijvoorbeeld koppen, tabellen en invoervelden.
- DataminimalisatieDataminimalisatie beperkt persoonsgegevens tot wat passend, relevant en noodzakelijk is voor een bepaald doel.
- Bewaarbeleid voor gegevensEen bewaarbeleid bepaalt doel, begin, duur en einde van opslag. Verwijderingstaken en kopieën moeten technisch worden meegenomen.
- EnvelopversleutelingEnvelopversleuteling scheidt de gegevenssleutel van de sleutel die deze beschermt. Versleuteld bestand en verpakte gegevenssleutel horen bij elkaar.
Uw project met ASES
Beschrijf ons uw project. We nemen contact met u op met een eerste inschatting.