# Bezpieczeństwo Craft CMS po PHP2Shell: jak zabezpieczyć strony agencji

> Zabezpiecz Craft CMS po PHP2Shell: sprawdź PHP w raporcie systemu, chroń .env i Security Key, wyłącz devMode i porównaj Project Config.

Źródło: https://phpsos.de/pl/plattformen/craft-cms/  
Stan: 25.10.2026  
Dostawca: PHP SOS, Pomoc awaryjna PHP i bezpieczeństwo serwerów. Natychmiastowa pomoc przez WhatsApp: https://wa.me/491736494914?text=Dzie%C5%84%20dobry%2C%20PHP%20SOS%2C%20potrzebujemy%20pomocy%20z%20naszym%20serwerem%20PHP.%20Firma%3A%20%E2%80%A6%20Strona%20internetowa%3A%20%E2%80%A6

**Krótko:** Bezpieczeństwo Craft CMS zależy po PHP2Shell od PHP serwera, a nie od Craft. Zwłaszcza agencje z wieloma stronami Craft powinny teraz sprawdzić każdy serwer z osobna. Po poprawce i restarcie należy skontrolować `.env`, Security Key, `devMode`, katalog główny dokumentów oraz porównanie Project Config.

## Co PHP2Shell oznacza dla stron Craft

Craft CMS jest lubiany w agencjach, ponieważ oferuje elastyczne modele treści i czyste szablony. Odpowiednio wiele agencji prowadzi dziesiątki stron Craft na różnych serwerach i w różnych pakietach hostingowych. Luki PHP CVE-2026-109618 i CVE-2026-109619 umożliwiają według zespołu PHP zdalne wykonanie złośliwego kodu bez logowania, niezależnie od wersji Craft.

Dla agencji najważniejsze pytanie ma więc charakter organizacyjny: która strona działa gdzie, na jakim PHP i kto odpowiada za aktualizację? Pierwszym krokiem jest lista wszystkich instalacji z firmą hostingową, stanem PHP i osobą kontaktową. Jak wspieramy w tym agencje, opisuje artykuł [Partner bezpieczeństwa dla agencji](https://phpsos.de/pl/branchen/agenturen-white-label/).

## Bezpieczeństwo Craft CMS: sprawdzanie wersji PHP

W panelu sterowania **Narzędzia > Raport systemu** pokazuje wersję PHP, bazę danych i zainstalowane wtyczki. Jest to wersja, na której strona działa w sieci. Konsola Craft `php craft`, przetwarzanie kolejki i zadania cron korzystają natomiast z PHP wiersza poleceń. Oba muszą być załatane.

Naprawione wersje upstream to 8.5.12, 8.4.27, 8.3.36 i 8.2.35. Wiele firm hostingowych wprowadza poprawki jako backport; numer pozostaje wtedy ten sam. Które wersje są dotknięte, pokazuje artykuł [Które wersje PHP są dotknięte?](https://phpsos.de/pl/php2shell/betroffene-php-versionen/). To, które wersje PHP obsługuje Państwa wersja Craft, można sprawdzić w wymaganiach systemowych w dokumentacji na craftcms.com.

Craft przetwarza zadania w tle w kolejce. Jeśli działa ona jako stały proces pod menedżerem procesów, ten również musi zostać zrestartowany po aktualizacji PHP.

## Katalogi i konfiguracja w Craft

| Miejsce | Zawartość | Punkt kontroli |
|---|---|---|
| `.env` | Dane dostępowe do bazy danych, `CRAFT_SECURITY_KEY`, inne klucze | Po podejrzeniu odnowić wartości |
| `config/general.php` | `devMode`, `allowAdminChanges`, ścieżka do panelu sterowania | Dopisany kod PHP |
| `config/project/` | Project Config jako YAML | Porównanie z Git |
| `web/` | Katalog główny dokumentów z `index.php`, `cpresources/`, często pliki przesłane | Dodatkowe pliki PHP |
| `storage/` | Logi, pliki czasu wykonania, często kopie zapasowe bazy danych | Niedostępne przez sieć |
| `templates/` | Szablony Twig | Obcy JavaScript |
| `modules/`, `vendor/` | Własne moduły i wtyczki | Zmienione pliki, `composer audit` |

Często pomijanym punktem jest `storage/backups/`. Craft zapisuje tam kopie zapasowe bazy danych, które mogą zawierać pełne dane klientów i formularzy. Ten folder nie może nigdy leżeć poniżej katalogu głównego dokumentów.

Bezpieczne kontrole w wierszu poleceń:

```bash
# Wyświetlenie różnic między Project Config a bazą danych
php craft project-config/diff
# Pliki PHP w katalogu głównym dokumentów poza index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
```

> **Ważne:**
> W produkcji `devMode` musi mieć wartość `false`. Przy włączonym `devMode` Craft pokazuje szczegółowe komunikaty o błędach ze ścieżkami i fragmentami kodu, które ułatwiają pracę atakującym.

## Panel sterowania, użytkownicy i wtyczki

Panel sterowania znajduje się domyślnie pod `/admin`. Proszę sprawdzić, którzy użytkownicy mają prawa administratora, i usunąć dostępy byłych pracowników oraz freelancerów. Craft obsługuje uwierzytelnianie dwuskładnikowe; proszę z niego korzystać dla wszystkich kont z podwyższonymi uprawnieniami.

W produkcji proszę ustawić `allowAdminChanges` na `false`. Wtedy pola, sekcje i ustawienia wtyczek można zmieniać tylko przez wersjonowaną Project Config, a każde odstępstwo rzuca się w oczy przy porównaniu z Git. Wtyczki z Plugin Store wnoszą własny kod PHP; proszę sprawdzić, czy wszystkie są nadal utrzymywane i pasują do docelowej wersji PHP.

```php
// config/general.php, fragment dla środowiska produkcyjnego
'devMode' => false,
'allowAdminChanges' => false,
```

## Co potrafi aktualizacja Craft, a czego nie

Aktualizacja Craft lub wtyczki zamyka błędy w tym kodzie i może umożliwić nowsze wersje PHP. Nie łata PHP, nie restartuje ani PHP-FPM, ani kolejki, nie odnawia wyciekłego Security Key i nie usuwa obcych plików z `web/` ani `storage/`.

Dla agencji z wieloma instalacjami Craft liczy się po poprawce przede wszystkim powtarzalność. Proszę zapisać dla każdej strony, jaka wersja PHP działa w sieci i w wierszu poleceń, kiedy potwierdzono restart i czy kontrole wykazały nieprawidłowości. To zestawienie pomaga przy pytaniach klientów i przy przyszłych komunikatach. Proszę pamiętać także o publicznie dostępnych środowiskach stagingowych i deweloperskich. Działają one często z `devMode`, starszymi wersjami i prawdziwymi danymi klientów i przy aktualizacjach chętnie się je pomija. Jeśli są wątpliwości, czy strona klienta jest dotknięta, proszę poinformować klienta rzeczowo, zamiast czekać.

## Jak konkretnie pomaga PHP SOS?

- Wspólnie z Państwem rejestrujemy wszystkie instalacje Craft wraz z firmą hostingową, stanem PHP i odpowiedzialnością.
- Prosimy o potwierdzenie poprawki i restartu dla każdego serwera i zabezpieczamy logi od 20.10.2026.
- Sprawdzamy katalog główny dokumentów, `storage`, konfigurację, użytkowników i porównanie Project Config.
- Na życzenie przejmujemy bieżącą opiekę nad bezpieczeństwem stron Państwa klientów w ramach [umowy serwisowej bezpieczeństwa](https://phpsos.de/pl/leistungen/security-wartungsvertrag/), także pod Państwa nazwą.


## Częste pytania

**Czy Craft CMS jest dotknięty przez PHP2Shell?**  
Sam Craft CMS nie ma nowej luki. Działa jednak na PHP, a PHP2Shell tkwi w PHP. Każda instalacja Craft na niezałatanym serwerze jest więc potencjalnie podatna na atak, niezależnie od wersji Craft.

**Gdzie Craft pokazuje wersję PHP?**  
W panelu sterowania w Narzędzia > Raport systemu. Znajdują się tam wersja PHP, baza danych i zainstalowane wtyczki. Wprowadzonego backportu nie da się rozpoznać po numerze; potwierdza to Państwa firma hostingowa.

**Czym jest Security Key w Craft i dlaczego go odnawiać?**  
Security Key z pliku .env służy do podpisywania i szyfrowania danych. Kto go zna, może w pewnych okolicznościach fałszować sesje lub dane formularzy. W razie podejrzenia należy go odnowić w uzgodnieniu z Państwa agencją.

**Co daje allowAdminChanges ustawione na false?**  
Pola, sekcje i ustawienia wtyczek nie mogą wtedy być zmieniane w produkcji przez panel sterowania. Zmiany wchodzą już tylko przez wersjonowaną Project Config, co utrudnia manipulacje i czyni je bardziej widocznymi.

## Źródła

- [php.net: komunikaty bezpieczeństwa](https://www.php.net/)
- [Craft CMS](https://craftcms.com/)
- [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/)
- [Obsługiwane wersje PHP](https://www.php.net/supported-versions.php)
