Masz stronę z API (chatbot AI, formularz kontaktowy, panel admina). Ktoś z zewnątrz próbuje wysyłać zapytania do Twojego API, wstrzykiwać JavaScript do Twojej strony, albo łamać hasło brute-forcem. Bez zabezpieczeń — może mu się udać.
Trzy mechanizmy, które blokujesz w 2 godziny: CSP (blokuje XSS), CORS (blokuje nieautoryzowane requesty), rate limiting (blokuje brute-force). Zero zależności zewnętrznych, czysty PHP.
CSP z nonce — blokuj XSS
Content Security Policy mówi przeglądarce: "uruchamiaj TYLKO te skrypty, które mają specjalny token (nonce). Wszystkie inne — ignoruj." Nawet jeśli ktoś wstrzyknie JavaScript — przeglądarka go nie uruchomi.
<?php // Generuj losowy nonce (unikatowy per request) $cspNonce = bin2hex(random_bytes(16)); // Wyślij header CSP header("Content-Security-Policy: " . "default-src 'self'; " . "script-src 'self' 'nonce-{$cspNonce}'; " . "style-src 'self' 'unsafe-inline' fonts.googleapis.com; " . "font-src fonts.gstatic.com; " . "img-src 'self' data:; " . "frame-ancestors 'self'" ); ?> <!-- Każdy inline script MUSI mieć nonce --> <script nonce="<?= $cspNonce ?>"> // Ten skrypt się uruchomi </script> <!-- BEZ nonce = przeglądarka ZABLOKUJE --> <script> // Ten skrypt NIE się uruchomi! </script>
Jeśli .htaccess TEŻ wysyła CSP header — przeglądarka weźmie BARDZIEJ restrykcyjny. Twój nonce z PHP nie będzie w headerze z .htaccess i skrypty przestaną działać. Jedna reguła: CSP TYLKO w PHP (header.php), NIGDY w .htaccess.
Ten poradnik wymaga konta Pro
Dostęp do zaawansowanych poradników, kodu źródłowego i wsparcia technicznego.