Strona główna / Baza wiedzy / Słownik pojęć / XSS: skrypty międzystronowe prostymi słowami

XSS: skrypty międzystronowe prostymi słowami

Słownik pojęć 3 min czytania Zaktualizowano 27.07.2026
Czym jest XSS i dlaczego to luka nie w serwerze, a w wyjściu danych. Jakie zagrożenia niesie dla biznesu i pozycji, jak wygląda w raporcie Shield i jak ją zamknąć.

XSS (cross-site scripting, skrypty międzystronowe) — to sytuacja, gdy osoba trzecia sprawia, że na stronach Twojej witryny w przeglądarce odwiedzającego wykonuje się jej kod. Luka nie znajduje się w serwerze, lecz w tym, jak strona wyświetla dane przychodzące z zewnątrz: z adresu, formularza, komentarza lub profilu.

Analogia dla właściciela strony

Wyobraź sobie tablicę ogłoszeń przy wejściu do sklepu. Jeśli ktoś przyniesie notatkę „wydaj klucze do kasy osobie okazującej”, a Ty powiesisz ją nie czytając — pracownik wykona czyjąś instrukcję jako swoją. XSS działa w ten sam sposób: strona wstawia obcy tekst na stronę jako swój, a przeglądarka wykonuje wszystko, co tam się znalazło, z pełnym zaufaniem do Twojej domeny.

Jakie są rodzaje

TypGdzie występujeKogo dotyczy
OdzwierciedlonyWartość z adresu lub formularza wraca bezpośrednio w HTML odpowiedziOsoby, które kliknęły w przygotowany link
PrzechowywanyObcy tekst został zapisany w bazie — komentarz, recenzja, nazwa profiluKażdego, kto otworzy tę stronę
DOM-basedSkrypty strony same wstawiają dane z adresu do markupOdwiedzających, przy tym w odpowiedzi serwera nie ma śladów

Jakie niesie zagrożenia

  • Przechwytywanie sesji. Obcy skrypt odczytuje cookie i loguje się do panelu lub admina w imieniu użytkownika.
  • Spam i ukryte linki. Strona zaczyna promować obce tematy i traci zaufanie wyszukiwania.
  • Oznaczenie w przeglądarce i wynikach. Jeśli przez lukę wprowadzono złośliwy kod, domena trafia do baz niebezpiecznych stron, odwiedzający widzi ostrzeżenie „ta strona może być szkodliwa”, a strony wypadają z indeksu.

Jak to wygląda w raporcie Security Shield

Skaner wstawia w parametrach stron nieszkodliwy znacznik i sprawdza, czy wróci on w HTML bez kodowania. Jeśli wróci — pojawia się znalezisko „Wskaźnik odzwierciedlonego XSS”: średni poziom powagi, klasa CWE-79, kategoria OWASP A03:2021. Oznaczenie „wymaga weryfikacji” oznacza, że serwis widzi powierzchnię, ale jej nie wykorzystuje.

Aktywne próby są dostępne tylko w płatnych trybach i na potwierdzonej domenie — szybkie bezpłatne sprawdzenie ich nie wykonuje. Co jeszcze jest sprawdzane — w artykule o Security Shield.

Co zrobić z wykryciem

Otwórz adres i parametr z wiersza „Gdzie znaleziono” i poproś programistę o sprawdzenie, czy ta wartość jest kodowana przy wyjściu. Odzwierciedlenie surowej wartości w HTML — sygnał, że filtr tutaj nie działa.

Jak zamknąć

  1. Koduj wyjście. Dane od użytkownika przed wstawieniem do HTML przechodzą przez kontekstowe kodowanie: <, >, cudzysłowy i ampersand zamieniają się w bezpieczne sekwencje. W szablonach to jedna ustawienie.
  2. Sprawdzaj, co przychodzi. Jeśli parametr to liczba, przyjmuj tylko liczbę. Dla tekstów z markupem korzystaj z sprawdzonej biblioteki do czyszczenia HTML.
  3. Włącz CSP — nawet przy pomyłce w szablonie nie pozwoli wykonać obcego skryptu. Od czego zacząć, opisano w artykule o nagłówkach bezpieczeństwa.
  4. Zamknij cookie flagami HttpOnly i Secure, aby sesja nie mogła być odczytana z JavaScript.
  5. Aktualizuj CMS, motyw i wtyczki. Większość XSS na typowych stronach pochodzi z obcych rozszerzeń.

Jak zapobiec powtórzeniu

Reguła jest prosta: każde nowe pole, które widzi odwiedzający, przechodzi przez to samo bezpieczne wyjście, co pozostałe. Trzymaj CSP włączoną, powtarzaj skanowanie po wydaniach i instalacji wtyczek. Przydatny jest również SEO-audyt: nagły wzrost liczby zewnętrznych linków często okazuje się pierwszym śladem iniekcji.

Częste pytania

Czym XSS różni się od włamania na stronę?
Przy XSS obcy kod wykonuje się w przeglądarce odwiedzającego, a nie na Twoim serwerze. Ale przez tę lukę często uzyskuje się dostęp do panelu — i wtedy sprawa kończy się prawdziwym włamaniem.
Czy wystarczy jedna CSP, aby zamknąć XSS?
Nie. CSP to druga linia obrony: nie pozwala na wykonanie obcego skryptu, ale nie naprawia samego błędu w wyjściu. Należy zacząć od kodowania danych.
Dlaczego w raporcie jest adnotacja „wymaga weryfikacji”?
Skaner widzi, że wartość parametru wróciła w HTML bez kodowania, ale nie przeprowadza ataku. Potwierdzić i ocenić ryzyko powinien programista.
Wypróbuj na swoim projekcie Wszystko, co opisano w artykule, jest dostępne w panelu — bonus przy rejestracji już na saldzie.
Open dashboard
Czy artykuł był pomocny? Dziękujemy! Weźmiemy to pod uwagę przy dalszym rozwoju.