Blog 24/7

środowisko testowe

TAB. 1Hasłoobie formy
Po angielskustaging
Którą formą pisaćobie formy Obie formy są w obiegu. Przy pierwszym wystąpieniu pisz „polski termin (english term)”, dalej sam polski.
Inne formystaging · kopia testowa strony · środowisko przedprodukcyjne (znaczeniowo najdokładniejsze, ale w sprawdzonych źródłach niepoświadczone)
KategoriaStrony WWW, WordPress i hosting

Środowisko testowe (staging) to odrębna kopia strony, utrzymywana obok wersji produkcyjnej i służąca do sprawdzania zmian, zanim trafią do odwiedzających. WordPress rozpoznaje cztery typy środowisk: local, development, staging i production [1]. Z punktu widzenia bezpieczeństwa środowisko testowe jest częścią powierzchni ataku tak samo jak produkcja. Zawiera ten sam kod, często kopię tych samych danych i kont, a bywa chronione słabiej i aktualizowane rzadziej.

Jak działa

Punktem wyjścia jest zwykle kopia produkcji. Dokumentacja WordPressa opisuje rozsądną strategię kopii jako regularne migawki całej instalacji, razem z plikami rdzenia i bazą danych, przechowywane w zaufanym miejscu [8]. Taka kopia zapasowa (backup) nadaje się też do postawienia stagingu. Na kopii wprowadza się zmianę, na przykład aktualizację wtyczki, nową wersję motywu albo inną konfigurację serwera, sprawdza jej skutki i dopiero potem powtarza ją na produkcji.

RYS. 1Zmiana przez środowisko testowe

Tę samą zasadę stosują zespoły reagowania na incydenty. CERT Polska w komunikacie z 11 grudnia 2021 roku o krytycznej podatności w bibliotece Log4j zalecił, aby tymczasowe obejście, wymagające restartu usługi, zostało najpierw przeprowadzone w środowisku testowym [6]. Nawet pilna łatka (patch) albo obejście niesie ryzyko awarii, a sprawdzenie ich na kopii to ryzyko ogranicza.

Rodzaje środowisk

Podział na typy środowisk nie jest specyficzny dla WordPressa, ale rdzeń nadaje mu konkretne nazwy i skutki. Zestawienie poniżej odpowiada wartościom zwracanym przez funkcję wp_get_environment_type().

TypPrzeznaczenieZachowanie WordPressa
localpraca na komputerze programistyjedna z czterech dozwolonych wartości [1]
developmentwspólny serwer deweloperskiWP_DEBUG włączane, jeśli nie zdefiniowano go w wp-config.php [2]
stagingkopia przedprodukcyjna do akceptacji zmianjedna z czterech dozwolonych wartości [1]
productionstrona publicznawartość domyślna, gdy typu nie ustawiono [1]

W WordPressie

Typ środowiska ustawia się zmienną środowiskową PHP albo stałą WP_ENVIRONMENT_TYPE; stała nadpisuje wartość zmiennej [2]. Gdy podana wartość nie należy do listy dozwolonych, WordPress zwraca domyślne production [2]. Funkcja wp_get_environment_type() jest dostępna od wersji 5.5.0 [1]. Najprostszy sposób to stała w pliku konfiguracyjnym kopii:

define( 'WP_ENVIRONMENT_TYPE', 'staging' );

Motyw albo wtyczka może odczytać tę wartość i na stagingu zachowywać się inaczej niż na produkcji. Trzeba jednak pamiętać o skutku ubocznym typu development: jeśli stała WP_DEBUG nie jest zdefiniowana, WordPress ją włącza [2]. Na kopii dostępnej z internetu oznacza to ryzyko trybu debugowania widocznego dla obcych.

Indeksowanie. W ustawieniach czytania WordPress ma opcję „Discourage search engines from indexing this site”. Od wersji 5.3 powoduje ona dodanie do nagłówka strony znacznika robots z wartością noindex,nofollow [3]. Dokumentacja zaznacza jednak, że opcja nie blokuje dostępu do witryny, a uszanowanie prośby zależy od wyszukiwarek [3]. Google podobnie ostrzega, że plik robots.txt nie jest sposobem na utrzymanie strony poza wynikami wyszukiwania; zaleca noindex albo ochronę hasłem [4]. Dlatego staging zamyka się przed obcymi, na przykład przez zabezpieczenie katalogu hasłem albo białą listę adresów IP.

Zagrożenia i skutki

OWASP zalicza do błędnej konfiguracji zabezpieczeń między innymi niepotrzebnie włączone funkcje, strony, konta i uprawnienia, domyślne konta z niezmienionymi hasłami oraz komunikaty błędów ujawniające ślady stosu [5]. Środowisko testowe łatwo spełnia kilka tych warunków naraz, bo uchodzi za tymczasowe.

  • Porzucona kopia. Staging, którego nikt nie aktualizuje, zachowuje stare wersje wtyczek. Znana podatność we wtyczce, załatana na produkcji, pozostaje wtedy otwarta na kopii w tej samej domenie lub na tym samym serwerze.
  • Kopia danych. Baza skopiowana z produkcji zawiera konta użytkowników i dane klientów. Ich wyciek ze słabiej chronionej kopii ma te same skutki co wyciek z produkcji.
  • Wspólne hasła. Te same dane uwierzytelniające na obu środowiskach sprawiają, że przejęcie stagingu otwiera drogę do produkcji.
  • Ślad w wyszukiwarce. Zaindeksowany adres testowy to ujawnienie informacji o wersjach i planowanych zmianach.
  • Połączenie z produkcją. Kopia, która korzysta z produkcyjnej bazy albo usług, wykonuje realne operacje, na przykład wysyła wiadomości do prawdziwych klientów.

Dobre praktyki

OWASP zaleca powtarzalny, najlepiej zautomatyzowany proces utwardzania, w którym środowiska deweloperskie, testowe i produkcyjne są skonfigurowane identycznie, ale każde ma inne dane uwierzytelniające [5]. Zaleca też minimalną platformę bez zbędnych funkcji, komponentów i przykładów [5].

  • Ustawić WP_ENVIRONMENT_TYPE na staging, aby kod mógł rozpoznać kopię [2].
  • Zamknąć dostęp hasłem albo listą adresów, zamiast polegać na prośbie o nieindeksowanie [4].
  • Nadać kopii osobne hasła i klucze, a konta ograniczyć zgodnie z zasadą najmniejszych uprawnień.
  • Objąć staging tą samą aktualizacją oprogramowania co produkcję albo usuwać go po zakończeniu prac.
  • Odciąć kopię od produkcyjnej bazy, bramek płatności i wysyłki poczty.

Historia i przykłady

Niebezpiecznik 25 września 2014 roku opisał potwierdzenia zakupu biletów, które PKP Intercity w nocy z 24 na 25 września rozesłało do klientów, choć ci niczego nie kupowali [7]. Przewoźnik tłumaczył wysyłkę testami nowych funkcjonalności systemu sprzedaży [7]. Autorzy wpisu uznali, że najprawdopodobniej były one wynikiem niedokładnego przetestowania nowej wersji systemu albo prac na produkcji lub na stagingu podpiętym do produkcyjnej bazy [7]. Przykład pokazuje, że środowisko testowe chroni produkcję tylko wtedy, gdy jest od niej naprawdę oddzielone.

TAB. 2

Przypisy

8
  1. [1] wp_get_environment_type() — Function Reference · WordPress.org
  2. [2] wp-config.php — Advanced Administration Handbook · WordPress.org
  3. [3] Settings Reading screen · WordPress.org
  4. [4] Introduction to robots.txt · Google Search Central
  5. [5] A05:2021 – Security Misconfiguration · OWASP
  6. [6] Krytyczna podatność w bibliotece Apache Log4j · CERT Polska
  7. [7] PKP Intercity kupiło mi bilet · Niebezpiecznik
  8. [8] Hardening WordPress — Advanced Administration Handbook · WordPress.org
TAB. 3

Hasła w tym artykule

13
TAB. 4

Linkują tutaj

38

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com