XSS – Cross-Site Scripting
Hogyan alakul át nem megbízható adat futtatható böngészőkóddá, és miért kontextusfüggő az XSS elleni védelem?
Röviden
XSS akkor jön létre, amikor támadó által befolyásolható adat olyan kimeneti kontextusba kerül, ahol a böngésző azt kódként értelmezheti. A probléma nem az, hogy „HTML karakter van az inputban”, hanem hogy adatok és futtatható tartalom határa elmosódik.
Mit jelent a xss – cross-site scripting?
XSS akkor jön létre, amikor támadó által befolyásolható adat olyan kimeneti kontextusba kerül, ahol a böngésző azt kódként értelmezheti. A probléma nem az, hogy „HTML karakter van az inputban”, hanem hogy adatok és futtatható tartalom határa elmosódik.
Adat vagy futtatható markup?
Nyers bemenet
<img src=x onerror="alert(1)">
HTML-kódolt megjelenítés
<img src=x onerror="alert(1)">
Ez szemléltetés: a helyes védelem kontextusfüggő output encoding, biztonságos framework API-k, sanitization ahol valóban HTML-t engedsz, és defense-in-depthként CSP.
Hogyan működik a gyakorlatban?
Modern frameworkök sok alapértelmezett renderelési útvonalon escape-elnek, de veszélyes HTML API-k, rossz DOM-manipuláció vagy hibás templating továbbra is rést nyithat. A helyes védelem a konkrét kimeneti kontextushoz illő encoding, szükség esetén sanitization és defense-in-depth CSP.
- Kezeld az adatot adatként, ne HTML-ként vagy JavaScriptként.
- Kerüld a veszélyes sinkeket és a nyers HTML beszúrást, ha nincs rá valódi szükség.
- Ha felhasználói HTML engedélyezett, használj erre tervezett sanitizert.
- CSP csökkentheti egy hiba kihasználhatóságát, de nem helyettesíti a helyes outputkezelést.
Gyakorlati fejlesztői szemlélet
Reactben és hasonló frameworkben maradj az alapértelmezett szöveges renderelésnél. Ha mégis gazdag HTML tartalmat kezelsz, külön adatmodell, whitelistelt formátum és auditált sanitization jobb, mint egy általános regex.
Gyakori hibák és félreértések
- Minden inputból törölni a < karaktert, és ezt teljes védelemnek gondolni.
- CSP-t elsődleges XSS-javításként kezelni.
- A backend validációt összekeverni a kimeneti kontextushoz kötött encodinggal.
Gyakori kérdések
A React automatikusan megvéd minden XSS-től?
Nem. Sok szöveges renderelési útvonalat biztonságosan escape-el, de veszélyes API-k, külső HTML, DOM sinkek és más integrációk mellett továbbra is kell biztonsági gondolkodás.
Források és szabványok
A technikai részletekhez elsődleges szabványokat és karbantartott hivatalos dokumentációt használok. Frameworkök, böngészők és webes API-k idővel változhatnak, ezért implementálás előtt mindig ellenőrizd az aktuális dokumentációt is.
Kapcsolódó ByBence Academy