HttpOnly to flaga ciasteczka, która blokuje dostęp do niego ze skryptów JavaScript działających na stronie. Ciasteczko jest nadal wysyłane z żądaniami HTTP, ale kod pobierany przez document.cookie go nie zobaczy, co utrudnia kradzież identyfikatora sesji w ataku XSS.
Jak ustawić HttpOnly?
Flagę dodaje serwer w nagłówku Set-Cookie, np. Set-Cookie: sesja=abc123; HttpOnly; Secure; SameSite=Lax. W PHP służy do tego parametr httponly w funkcji setcookie lub ustawienie session.cookie_httponly.
Co daje, a czego nie?
Ogranicza skutki XSS dla sesji, bo skrypt atakującego nie odczyta ciasteczka. Nie zatrzyma jednak innych działań takiego skryptu, np. wysyłania żądań w imieniu użytkownika, dlatego nie zastępuje usuwania samej luki XSS.
Kiedy nie stosować?
Gdy JavaScript musi odczytać wartość ciasteczka, na przykład do preferencji interfejsu. Dla ciasteczek uwierzytelniających flaga powinna być zawsze włączona.
Przykład w PHP
Ustawienie flagi w kodzie: setcookie('sesja', $wartosc, ['httponly' => true, 'secure' => true, 'samesite' => 'Lax']). Dla sesji PHP użyj session.cookie_httponly = 1 w konfiguracji. Sprawdzisz efekt w narzędziach deweloperskich: ciasteczko z flagą ma zaznaczone pole HttpOnly, a próba odczytu przez document.cookie go nie zwróci.
Ochrona ta ma sens tylko przy prawidłowo działającym szyfrowaniu, bez błędów certyfikatu SSL i mixed content.
Zobacz w praktyce
Jak naprawić błędy certyfikatu SSL i mixed content
Plik .htaccess bez tajemnic – przydatne reguły na przyspieszenie i porządek na serwerze
Jak zabezpieczyć aplikację przed SQL Injection