# Craft CMS:n tietoturva PHP2Shellin jälkeen: toimistojen verkkosivustojen suojaus

> Craft CMS:n suojaus PHP2Shellin jälkeen: tarkista PHP järjestelmäraportista, suojaa .env ja Security Key, poista devMode ja vertaa Project Config.

Lähde: https://phpsos.de/fi/plattformen/craft-cms/  
Tilanne: 25.10.2026  
Palveluntarjoaja: PHP SOS, PHP-hätäapu ja palvelimen tietoturva. Pikaapu WhatsAppilla: https://wa.me/491736494914?text=Hei%20PHP%20SOS%2C%20tarvitsemme%20apua%20PHP-palvelimemme%20kanssa.%20Yritys%3A%20%E2%80%A6%20Verkkosivusto%3A%20%E2%80%A6

**Lyhyesti:** Craft CMS:n tietoturva riippuu PHP2Shellin jälkeen palvelimen PHP:stä, ei Craftista. Erityisesti toimistojen, joilla on monta Craft-sivustoa, kannattaa nyt tarkistaa jokainen palvelin erikseen. Korjauksen ja uudelleenkäynnistyksen jälkeen `.env`, Security Key, `devMode`, dokumenttijuuri ja Project Configin vertailu kuuluvat tarkistukseen.

## Mitä PHP2Shell tarkoittaa Craft-sivustoille

Craft CMS on toimistojen suosiossa, koska se tarjoaa joustavat sisältömallit ja siistit mallipohjat. Siksi monet toimistot ylläpitävät kymmeniä Craft-sivustoja eri palvelimilla ja hosting-paketeissa. PHP-tiimin mukaan PHP-haavoittuvuudet CVE-2026-109618 ja CVE-2026-109619 sallivat haittakoodin suorittamisen etänä ilman kirjautumista, Craft-versiosta riippumatta.

Toimistoille tärkein kysymys on siksi organisatorinen: mikä sivusto toimii missä, millä PHP:llä ja kuka vastaa päivityksestä? Luettelo kaikista asennuksista palveluntarjoajineen, PHP-tiloineen ja yhteyshenkilöineen on ensimmäinen askel. Miten tuemme toimistoja tässä, kuvaa sivu [Tietoturvakumppani toimistoille](https://phpsos.de/fi/branchen/agenturen-white-label/).

## Craft CMS:n tietoturva: PHP-version tarkistus

Control Panelissa **Työkalut > Järjestelmäraportti** näyttää PHP-version, tietokannan ja asennetut liitännäiset. Se on versio, jolla sivusto toimii verkossa. Craft-konsoli `php craft`, jonon käsittely ja cron-ajot käyttävät sen sijaan komentorivi-PHP:tä. Molempien on oltava korjattuja.

Korjatut upstream-versiot ovat 8.5.12, 8.4.27, 8.3.36 ja 8.2.35. Monet hosting-palveluntarjoajat tuovat korjaukset backporttina; numero pysyy silloin samana. Mitkä versiot ovat haavoittuvia, näyttää sivu [Mitkä PHP-versiot ovat haavoittuvia?](https://phpsos.de/fi/php2shell/betroffene-php-versionen/). Mitä PHP-versioita teidän Craft-versionne tukee, tarkistatte järjestelmävaatimuksista craftcms.comin dokumentaatiosta.

Craft käsittelee taustatehtävät jonossa. Jos se toimii pysyvänä prosessina prosessinhallinnan alla, myös se on käynnistettävä PHP-päivityksen jälkeen uudelleen.

## Craftin hakemistot ja asetukset

| Paikka | Sisältö | Tarkistuskohde |
|---|---|---|
| `.env` | Tietokantatunnukset, `CRAFT_SECURITY_KEY`, muut avaimet | arvot uusittava epäilyn jälkeen |
| `config/general.php` | `devMode`, `allowAdminChanges`, Control Panelin polku | sisään ujutettu PHP-koodi |
| `config/project/` | Project Config YAML:na | vertailu Gitiin |
| `web/` | Dokumenttijuuri: `index.php`, `cpresources/`, usein lataukset | ylimääräiset PHP-tiedostot |
| `storage/` | Lokit, ajonaikaiset tiedostot, usein tietokantavarmuuskopiot | ei saavutettavissa verkon kautta |
| `templates/` | Twig-mallipohjat | vieras JavaScript |
| `modules/`, `vendor/` | omat moduulit ja liitännäiset | muutetut tiedostot, `composer audit` |

Usein huomaamatta jäävä kohta on `storage/backups/`. Craft tallentaa sinne tietokantavarmuuskopioita, jotka voivat sisältää täydellisiä asiakas- ja lomaketietoja. Tämä kansio ei saa koskaan olla dokumenttijuuren alapuolella.

Vaarattomat tarkistukset komentorivillä:

```bash
# Näytetään Project Configin ja tietokannan erot
php craft project-config/diff
# PHP-tiedostot dokumenttijuuressa paitsi index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
```

> **Tärkeää:**
> Tuotannossa `devMode` kuuluu olla `false`. Kun `devMode` on päällä, Craft näyttää yksityiskohtaisia virheilmoituksia poluilla ja koodiotteilla, jotka helpottavat hyökkääjien työtä.

## Control Panel, käyttäjät ja liitännäiset

Control Panel sijaitsee oletuksena osoitteessa `/admin`. Tarkistakaa, kenellä on ylläpitäjän oikeudet, ja poistakaa entisten työntekijöiden ja freelancerien tunnukset. Craft tukee kaksivaiheista tunnistautumista; käyttäkää sitä kaikilla korotetuilla oikeuksilla varustetuilla tileillä.

Asettakaa tuotannossa `allowAdminChanges` arvoon `false`. Silloin kenttiä, osioita ja liitännäisten asetuksia voi muuttaa vain versioidun Project Configin kautta, ja jokainen poikkeama näkyy Gitiin verrattaessa. Plugin Storen liitännäiset tuovat mukanaan omaa PHP-koodia; tarkistakaa, ylläpidetäänkö ne vielä ja sopivatko ne tavoiteltuun PHP-versioon.

```php
// config/general.php, ote tuotantoympäristöä varten
'devMode' => false,
'allowAdminChanges' => false,
```

## Mihin Craft-päivitys pystyy ja mihin ei

Craftin tai liitännäisen päivitys sulkee tämän koodin virheitä ja voi mahdollistaa uudemmat PHP-versiot. Se ei korjaa PHP:tä, ei käynnistä PHP-FPM:ää eikä jonoa uudelleen, ei uusi vuotanutta Security Keytä eikä poista vieraita tiedostoja hakemistoista `web/` tai `storage/`.

Toimistoille, joilla on monta Craft-asennusta, korjauksen jälkeen korostuu toistettavuus. Kirjatkaa jokaisesta sivustosta ylös, mikä PHP-versio on käytössä webissä ja komentorivillä, milloin uudelleenkäynnistys vahvistettiin ja olivatko tarkistukset poikkeavia. Tämä yleiskatsaus auttaa asiakkaiden kysymyksissä ja tulevissa ilmoituksissa. Ajatelkaa myös julkisesti tavoitettavia staging- ja kehitysympäristöjä. Ne toimivat usein `devMode`:lla, vanhemmilla tiloilla ja oikeilla asiakastiedoilla, ja ne unohtuvat mielellään päivityksissä. Jos on epäselvää, koskeeko asia asiakassivustoa, tiedottakaa asiakasta asiallisesti sen sijaan, että odottaisitte.

## Miten PHP SOS auttaa konkreettisesti?

- Kartoitamme kanssanne kaikki Craft-asennukset palveluntarjoajineen, PHP-tiloineen ja vastuineen.
- Varmennamme korjauksen ja uudelleenkäynnistyksen palvelinkohtaisesti ja varmuuskopioimme lokit 20.10.2026 alkaen.
- Tarkistamme dokumenttijuuren, `storage`:n, asetukset, käyttäjät ja Project Configin vertailun.
- Pyynnöstä hoidamme asiakassivustojenne jatkuvan tietoturvahuollon [tietoturvahuoltosopimuksessa](https://phpsos.de/fi/leistungen/security-wartungsvertrag/), myös nimissänne.


## Usein kysytyt kysymykset

**Koskeeko PHP2Shell Craft CMS:ää?**  
Craft CMS:ssä itsessään ei ole uutta aukkoa. Se toimii kuitenkin PHP:llä, ja PHP2Shell on PHP:ssä. Jokainen Craft-asennus korjaamattomalla palvelimella on siksi mahdollisesti haavoittuva Craft-versiosta riippumatta.

**Mistä Craft näyttää PHP-version?**  
Control Panelissa kohdassa Työkalut > Järjestelmäraportti. Siellä ovat PHP-versio, tietokanta ja asennetut liitännäiset. Asennettua backportia ei tunnista numerosta; sen vahvistaa hosting-palveluntarjoajanne.

**Mikä Security Key on Craftissa ja miksi se uusitaan?**  
Tiedoston .env Security Key on tarkoitettu tietojen allekirjoittamiseen ja salaamiseen. Se, joka tuntee sen, voi olosuhteista riippuen väärentää istuntoja tai lomaketietoja. Epäilyn jälkeen se kannattaa uusia sovittuna toimistonne kanssa.

**Mitä hyötyä on asetuksesta allowAdminChanges arvolla false?**  
Silloin kenttiä, osioita ja liitännäisten asetuksia ei voi enää muuttaa tuotannossa Control Panelin kautta. Muutokset tulevat vain versioidun Project Configin kautta, mikä tekee manipuloinnista vaikeampaa ja näkyvämpää.

## Lähteet

- [php.net: tietoturvatiedotteet](https://www.php.net/)
- [Craft CMS](https://craftcms.com/)
- [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/)
- [Tuetut PHP-versiot](https://www.php.net/supported-versions.php)
