# Craft CMS sikkerhed efter PHP2Shell: sådan sikrer I bureauets websites

> Sikr Craft CMS efter PHP2Shell: kontrollér PHP i systemrapporten, beskyt .env og security key, slå devMode fra og afstem Project Config.

Kilde: https://phpsos.de/da/plattformen/craft-cms/  
Status: 25.10.2026  
Udbyder: PHP SOS, PHP-nødhjælp og serversikkerhed. Akut hjælp på WhatsApp: https://wa.me/491736494914?text=Hej%20PHP%20SOS%2C%20vi%20har%20brug%20for%20hj%C3%A6lp%20med%20vores%20PHP-server.%20Firma%3A%20%E2%80%A6%20Website%3A%20%E2%80%A6

**Kort sagt:** Craft CMS sikkerhed afhænger efter PHP2Shell af serverens PHP, ikke af Craft. Især bureauer med mange Craft-websites bør nu kontrollere hver server for sig. Efter rettelse og genstart hører `.env`, security key, `devMode`, dokumentroden og afstemningen af Project Config med på kontrollisten.

## Hvad PHP2Shell betyder for Craft-websites

Craft CMS er populært hos bureauer, fordi det tilbyder fleksible indholdsmodeller og rene skabeloner. Tilsvarende passer mange bureauer snesevis af Craft-websites på forskellige servere og hostingpakker. PHP-sårbarhederne CVE-2026-109618 og CVE-2026-109619 gør det ifølge PHP-teamet muligt at køre skadelig kode på afstand uden login, uafhængigt af Craft-versionen.

For bureauer er det vigtigste spørgsmål derfor organisatorisk: Hvilket website kører hvor, med hvilket PHP, og hvem er ansvarlig for opdateringen? En liste over alle installationer med hostingudbyder, PHP-status og kontaktperson er første skridt. Hvordan vi understøtter bureauer heri, beskriver [Sikkerhedspartner for bureauer](https://phpsos.de/da/branchen/agenturen-white-label/).

## Craft CMS sikkerhed: kontrollér PHP-versionen

I Control Panel viser **Værktøjer > Systemrapport** PHP-versionen, databasen og de installerede plugins. Det er den version, som websitet kører med på nettet. Craft-konsollen `php craft`, queue-behandling og cronjobs bruger derimod kommandolinje-PHP. Begge skal være patchet.

Rettede upstream-versioner er 8.5.12, 8.4.27, 8.3.36 og 8.2.35. Mange hostingudbydere indspiller rettelser som backport; nummeret forbliver så det samme. Hvilke versioner der er berørt, viser [Hvilke PHP-versioner er berørt?](https://phpsos.de/da/php2shell/betroffene-php-versionen/). Hvilke PHP-versioner jeres Craft-version understøtter, kontrollerer I ifølge systemkravene i dokumentationen på craftcms.com.

Craft behandler baggrundsopgaver i en kø. Kører den som en vedvarende proces under en proceshåndtering, skal også denne genstartes efter PHP-opdateringen.

## Mapper og konfiguration i Craft

| Sted | Indhold | Kontrolpunkt |
|---|---|---|
| `.env` | Databaseadgang, `CRAFT_SECURITY_KEY`, yderligere nøgler | forny værdier ved mistanke |
| `config/general.php` | `devMode`, `allowAdminChanges`, sti til Control Panel | indskudt PHP-kode |
| `config/project/` | Project Config som YAML | afstemning med Git |
| `web/` | Dokumentrod med `index.php`, `cpresources/`, ofte uploads | ekstra PHP-filer |
| `storage/` | Logs, kørselsfiler, ofte database-backups | ikke tilgængelig via nettet |
| `templates/` | Twig-skabeloner | fremmed JavaScript |
| `modules/`, `vendor/` | egne moduler og plugins | ændrede filer, `composer audit` |

Et ofte overset punkt er `storage/backups/`. Craft lægger dér databasesikkerhedskopier, som kan indeholde fuldstændige kunde- og formulardata. Denne mappe må aldrig ligge under dokumentroden.

Ufarlige kontroller på kommandolinjen:

```bash
# Vis forskelle mellem Project Config og database
php craft project-config/diff
# PHP-filer i dokumentroden undtagen index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
```

> **Vigtigt:**
> I produktion hører `devMode` hjemme på `false`. Med `devMode` slået til viser Craft udførlige fejlmeddelelser med stier og kodeudsnit, som gør angriberes arbejde lettere.

## Control Panel, brugere og plugins

Control Panel ligger som standard under `/admin`. Kontrollér, hvilke brugere der har administratorrettigheder, og fjern adgange tilhørende tidligere medarbejdere og freelancere. Craft understøtter en totrinsgodkendelse; brug den til alle konti med forhøjede rettigheder.

Sæt i produktion `allowAdminChanges` til `false`. Så kan felter, sektioner og plugin-indstillinger kun ændres via den versionerede Project Config, og hver afvigelse opdages ved afstemning med Git. Plugins fra Plugin Store medbringer egen PHP-kode; kontrollér, om alle stadig vedligeholdes og passer til den tilsigtede PHP-version.

```php
// config/general.php, udsnit til produktionsmiljøet
'devMode' => false,
'allowAdminChanges' => false,
```

## Hvad en Craft-opdatering kan, og hvad den ikke kan

En opdatering af Craft eller et plugin lukker fejl i denne kode og kan gøre nyere PHP-versioner mulige. Den patcher ikke PHP, genstarter hverken PHP-FPM eller køen, fornyer ikke en udsivet security key og fjerner ikke fremmede filer fra `web/` eller `storage/`.

For bureauer med mange Craft-installationer tæller efter rettelsen først og fremmest gentagelighed. Notér pr. website, hvilken PHP-version der kører på nettet og på kommandolinjen, hvornår genstarten blev bekræftet, og om kontrollerne var påfaldende. Denne oversigt hjælper ved forespørgsler fra kunder og ved fremtidige meddelelser. Tænk også på offentligt tilgængelige staging- og udviklingsmiljøer. De kører ofte med `devMode`, ældre versioner og rigtige kundedata og glemmes gerne ved opdateringer. Er der tvivl om, hvorvidt en kundeside er berørt, så underret kunden sagligt i stedet for at vente.

## Hvordan hjælper PHP SOS konkret?

- Vi registrerer sammen med jer alle Craft-installationer med hostingudbyder, PHP-status og ansvar.
- Vi lader rettelse og genstart bekræfte pr. server og sikrer logs fra 20.10.2026.
- Vi kontrollerer dokumentrod, `storage`, konfiguration, brugere og afstemningen af Project Config.
- På ønske overtager vi den løbende sikkerhedsvedligeholdelse af jeres kundesites i [sikkerhedsvedligeholdelsesaftalen](https://phpsos.de/da/leistungen/security-wartungsvertrag/), også under jeres navn.


## Ofte stillede spørgsmål

**Er Craft CMS berørt af PHP2Shell?**  
Craft CMS har ikke selv en ny sårbarhed. Men det kører på PHP, og PHP2Shell sidder i PHP. Enhver Craft-installation på en upatchet server er derfor potentielt sårbar, uafhængigt af Craft-versionen.

**Hvor viser Craft PHP-versionen?**  
I Control Panel under Værktøjer > Systemrapport. Dér står PHP-version, database og installerede plugins. En indspillet backport kan ikke ses af nummeret; det bekræfter jeres hostingudbyder.

**Hvad er security key i Craft, og hvorfor skal den fornyes?**  
Security key fra filen .env bruges til at signere og kryptere data. Den, der kender den, kan under visse omstændigheder forfalske sessioner eller formulardata. Ved mistanke bør I forny den i samråd med jeres bureau.

**Hvad opnår man med allowAdminChanges på false?**  
Så kan felter, sektioner og plugin-indstillinger i produktion ikke længere ændres via Control Panel. Ændringer kommer kun via den versionerede Project Config, hvilket gør manipulationer sværere og mere synlige.

## Kilder

- [php.net: Sikkerhedsmeddelelser](https://www.php.net/)
- [Craft CMS](https://craftcms.com/)
- [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/)
- [Understøttede PHP-versioner](https://www.php.net/supported-versions.php)
