Klucze bezpieczeństwa w WordPress (Salt Keys) – co to jest?

Klucze bezpieczeństwa (ang. Security Keys) i sole kryptograficzne (ang. Salt Keys) to zestaw ośmiu losowych ciągów kryptograficznych zdefiniowanych w pliku konfiguracyjnym wp-config.php. WordPress używa ich do podpisywania i szyfrowania danych przechowywanych w ciasteczkach sesyjnych użytkowników.

Celem kluczy jest utrudnienie fałszowania i modyfikowania ciasteczek uwierzytelniających WordPressa. Klucze nie służą do odzyskiwania ani ochrony haseł zapisanych w bazie danych. Jeśli ważne ciasteczko sesyjne zostanie przechwycone, może stanowić realne ryzyko przejęcia sesji, dlatego po incydencie bezpieczeństwa regeneracja kluczy jest ważna – unieważnia stare ciasteczka i wymusza ponowne logowanie.

Jak klucze działają w praktyce

Kiedy użytkownik loguje się do WordPress, system tworzy ciasteczko sesyjne i podpisuje je przy użyciu kluczy zdefiniowanych w wp-config.php. Przy kolejnych żądaniach WordPress weryfikuje podpis ciasteczka – jeśli się nie zgadza, sesja jest traktowana jako nieważna.

Klucze działają w parach: cztery klucze uwierzytelniające i cztery sole. Używane razem maksymalizują losowość i trudność odtworzenia skrótu. Są generowane automatycznie podczas instalacji WordPress przy użyciu oficjalnego generatora losowego api.wordpress.org/secret-key/1.1/salt/.

Raz zapisane klucze nie aktualizują się samoczynnie – pozostają w pliku wp-config.php tak długo, aż administrator je ręcznie zmieni lub użyje do tego wtyczki albo narzędzia WP-CLI.

Gdzie są przechowywane

Klucze bezpieczeństwa znajdują się wyłącznie w pliku wp-config.php. Nie są zapisywane w bazie danych WordPress. To ważne rozróżnienie: jeśli atakujący uzyska dostęp wyłącznie do bazy danych, klucze z wp-config.php pozostają poza jego zasięgiem. Z kolei wyciek wp-config.php jest bardzo poważny, ponieważ plik zawiera dane dostępowe do bazy danych oraz klucze bezpieczeństwa – nawet jeśli nie zawiera samej zawartości bazy.

Plik wp-config.php to plik PHP wczytywany przy każdym żądaniu – dlatego powinien mieć ograniczone uprawnienia dostępu (600 lub 400), co opisuje artykuł o uprawnieniach plików w WordPress.

Kiedy regenerować klucze

Regeneracja kluczy jest zalecana w następujących sytuacjach:

  • Po incydencie bezpieczeństwa (włamanie, infekcja malware)
  • Po podejrzeniu, że hasło administratora lub dane wp-config.php mogły zostać skompromitowane
  • Po zmianie uprawnień lub udostępnieniu pliku konfiguracyjnego osobie trzeciej
  • Jako element rutynowego wzmacniania bezpieczeństwa (np. co kilka miesięcy)

Efekt regeneracji: WordPress natychmiast unieważnia wszystkie istniejące ciasteczka sesyjne. Każdy zalogowany użytkownik – w tym administrator – zostaje wylogowany i musi ponownie podać dane logowania. To celowe zachowanie: nowe klucze sprawiają, że stare ciasteczka stają się bezwartościowe dla kogoś, kto je wcześniej przechwycił.

Regeneracja kluczy nie usuwa kont użytkowników, nie zmienia haseł ani nie modyfikuje treści strony.

Jak regenerować klucze

Trzy sposoby:

  1. Generator WordPress.org – wejdź na api.wordpress.org/secret-key/1.1/salt/, skopiuj wygenerowane linie i zastąp nimi odpowiadające im linie w wp-config.php
  2. WP-CLI – polecenie wp config shuffle-salts generuje nowe klucze i nadpisuje je w pliku automatycznie
  3. Wtyczka – np. Salt Shaker lub sekcja w Wordfence umożliwia regenerację z poziomu panelu WordPress

Czym klucze bezpieczeństwa nie są

Klucze bezpieczeństwa nie są tym samym co nonce’y WordPress. Nonce’y to jednorazowe tokeny chroniące konkretne formularze i akcje przed atakami CSRF. Klucze Salt działają globalnie i chronią sesje użytkowników, nie pojedyncze żądania.

Klucze bezpieczeństwa nie chronią też haseł przechowywanych w bazie danych – hasła mają własny mechanizm haszowania. Salt Keys chronią dane przesyłane przez ciasteczka, a nie dane w tabeli wp_users.

Ciasteczka, których bezpieczeństwo wzmacniają klucze Salt, to tylko część systemu zarządzania cookies w WordPress. Inne ciasteczka – np. zgodowe lub WooCommerce – działają niezależnie od kluczy konfiguracyjnych.

Podsumowanie

Klucze bezpieczeństwa w WordPress to losowe ciągi kryptograficzne w wp-config.php, które podpisują i szyfrują ciasteczka sesyjne. Uniemożliwiają odtworzenie danych sesji przez osoby, które przechwyciły ciasteczko. Regeneracja kluczy natychmiast wylogowuje wszystkich użytkowników i jest zalecanym krokiem po każdym incydencie bezpieczeństwa.