# phpinfo()-failid: miks need peavad kaduma

> Unustatud phpinfo-fail reedab teed, mooduleid ja vahel ligipääsuandmeid. Nii leiate sellised failid, eemaldate need ja kontrollite PHP-d turvalisemalt.

Allikas: https://phpsos.de/et/blog/phpinfo-dateien-entfernen/  
Seis: 25.10.2026  
Pakkuja: PHP SOS, PHP hädaabi ja serveri turvalisus. Kohene abi WhatsAppis: https://wa.me/491736494914?text=Tere%2C%20PHP%20SOS%2C%20vajame%20abi%20oma%20PHP-serveriga.%20Ettev%C3%B5te%3A%20%E2%80%A6%20Veebisait%3A%20%E2%80%A6

**Lühidalt:** Fail, mis kutsub ainult `phpinfo()`, näitab igale külastajale PHP versiooni, mooduleid, teid ja sätteid, sageli ka keskkonnamuutujaid ligipääsuandmetega. phpinfo turvalisuse jaoks kehtib seetõttu: selliseid faile ei jäta kunagi püsivalt veebijuurkataloogi, kustutage need pärast kasutamist ning kontrollige PHP seisu pigem paketihalduse ja konfiguratsiooni kaudu. PHP2Shelli vastast paikamisseisu phpinfo väljund niikuinii ei tõenda.

## Testfail, mis jääb

21. oktoobrist 2026 kontrollivad tuhanded administraatorid, millist PHP versiooni nende veebisaidid edastavad. Kiireim tee on tuntud: luua fail `info.php` ühe ainsa reaga, avada see brauseris, lugeda tulemus. See töötab. Probleem algab pärast, kui fail unustatakse.

Sellised failid elavad üllatavalt kaua. Need liiguvad kolimistel kaasa, satuvad varukoopiatesse ja ilmuvad aastate pärast kaustadesse, mida keegi enam ei tunne. Automatiseeritud skannerid pärivad tüüpilisi failinimesi pidevalt. Mis oli administraatorile abivahend, on ründajale serveri ehitusjuhend.

Eriti mõjutatud on agentuurid ja hostingupakkujad paljude klientide veebisaitidega. Kes kontrollib kiires nädalas kümneid veebisaite, loob kiiresti kümneid testfaile. Üksainus unustatud kaust piisab, et fail on kuude pärast endiselt kättesaadav.

## Mida phpinfo() reedab ja miks see turvalisuse jaoks loeb

PHP käsiraamatu kohaselt väljastab `phpinfo()` PHP praeguse oleku. Konstantidega saab juhtida, millised osad ilmuvad; ilma määramata on see kõik.

| Ala (konstant) | Sisu käsiraamatu järgi | Miks tundlik |
|---|---|---|
| `INFO_GENERAL` | build, php.ini asukoht, veebiserver, süsteem | reedab operatsioonisüsteemi ja teed |
| `INFO_CONFIGURATION` | kõigi direktiivide kohalikud ja põhiväärtused | näitab, kas `disable_functions` või `open_basedir` toimivad |
| `INFO_MODULES` | laaditud laiendused sätetega | ründajad näevad, millised funktsioonid on saadaval |
| `INFO_ENVIRONMENT` | keskkonnamuutujad | siin on sageli andmebaasi või API ligipääsuandmed |
| `INFO_VARIABLES` | eelmääratletud muutujad (Environment, GET, POST, Cookie, Server) | sisaldab praeguse päringu päiseid ja küpsiseid |

Kõige ohtlikumad on kaks viimast rida. Kaasaegsed rakendused laevad ligipääsuandmeid meelsasti keskkonnamuutujatest, näiteks `.env`-failist või konteineri konfiguratsioonist. Need väärtused seisavad siis väljundis selge tekstina. Kuidas selliseid saladusi põhimõtteliselt kaitsta, kirjeldab artikkel [Ligipääsuandmete ja .env-failide õige kaitsmine](https://phpsos.de/et/blog/env-dateien-schuetzen/).

Lisaks: väljund näitab käimasoleva päringu väärtusi, seega ka küpsiseid ja päiseid. Kui ründaja saab külastaja lehele suunata ja vastust lugeda, näiteks mujal oleva Cross-Site-Scripting'u augu kaudu, muutuvad nähtavaks isegi HttpOnly-ga märgitud küpsised.

## Miks phpinfo ei ole PHP2Shelli vastane tõend

Paljud lõid faili just selleks, et paikamisseisu kontrollida. Just selleks sobib see vaid piiratud määral. Distributsioonid ja hostingupakkujad paigaldavad parandusi sageli tagasiportimisena; aruannete kohaselt näitab näiteks Ubuntu 24.04 pärast uuendust endiselt 8.3.6. Kuvatav number ütleb seega vähe. Vastupidi, ajakohane number ei tõesta, et kõik töölisprotsessid on taaskäivitatud.

Töökindel on paketi seis koos CVE-numbritega changelogis, täiendatud kõigi PHP protsesside taaskäivitamisega. Kuidas see käib, selgitab artikkel [PHP versiooni ja paikamisseisu õige kontrollimine](https://phpsos.de/et/php2shell/php-version-pruefen/).

Lühiajalisel väljundil veebikontekstis on sellest hoolimata koht: see näitab, milline php.ini ja millised väärtused veebisaidi jaoks tegelikult kehtivad, sest käsurida loeb sageli teist konfiguratsiooni. Taust tasemete ja prioriteedi kohta selgitab [php.ini selgitatud](https://phpsos.de/et/php/php-ini-erklaert/). Kui seda vajate, siis ligipääsukaitsega, juhusliku failinimega ja ainult minutiteks.

Enamiku küsimuste jaoks on niikuinii paremaid teid. FPM-pooli PHP versioon on kirjas selle konfiguratsioonis ja protsessiloendis. Üksikuid väärtusi saab päringuga `ini_get()` skriptiga väljaspool veebijuurkataloogi pärida, ilma et kõike avalikustataks. Ja hostingupaneelides näitab liides veebisaidi kohta määratud versiooni, kuigi ilma teabeta backportide kohta.

## Unustatud failide leidmine: konkreetsed kontrollsammud

Nii jälitate vanu jäänuseid Linuxi serveris. Käsud ainult loevad ega muuda midagi.

1. **Otsige phpinfo-kutsega faile** (kohandage teed):

```bash
grep -rlE "phpinfo[[:space:]]*\(" /var/www --include="*.php" 2>/dev/null
```

2. **Kontrollige tüüpilisi failinimesid**, ka ilma sisu tabamuseta:

```bash
find /var/www -type f \( -iname "info.php" -o -iname "phpinfo.php" -o -iname "test.php" -o -iname "i.php" \) 2>/dev/null
```

3. **Hinnake tabamusi:** Mitte iga leid ei ole testfail. Admin-tööriistad, paneelid või raamistikud võivad kasutada `phpinfo()` sisselogimise taga. Otsustav on, kas fail on internetist ilma sisselogimiseta kättesaadav.

4. **Vaadake juurdepääsud logist**, enne kui kustutate:

```bash
grep -E "GET /(info|phpinfo|test|i)\.php" /var/log/nginx/access.log* 2>/dev/null | tail -n 50
```

5. **Kustutage ja vahetage saladused:** Kui väljundis oli parool või võti ja fail oli avalik, loetakse väärtus teadaolevaks. Muutke see.

> **Näpunäide:**
> Leid tundmatu loomiskuupäeva ja phpinfo-kutse kõrval silmatorkava sisuga võib olla ka tagauks. Siis ärge ainult kustutage, vaid salvestage ja laske kontrollida, vt [Veebishellide tuvastamine ja eemaldamine](https://phpsos.de/et/ratgeber/webshell-erkennen/).

## Püsivalt ennetada, mitte koristada

Kolm meedet hoolitsevad selle eest, et teema tagasi ei tuleks. Esiteks: lisage `phpinfo` veebikonteksti php.ini nimekirja `disable_functions`. Kontrollige enne, kas teie paneel vajab funktsiooni olekulehe jaoks. Kuidas säte toimib ja kus on selle piirid, selgitab [disable_functions õigesti kasutada](https://phpsos.de/et/ratgeber/disable-functions/).

```ini
; php.ini FPM-i või Apache'i jaoks, seejärel taaskäivitage kõik PHP protsessid
disable_functions = phpinfo
expose_php = Off
```

Teiseks: tarnimine ainult kindla protsessi kaudu, näiteks Giti või build-pipeline'i abil, et üksikud failid käsitsi veebijuurkataloogi ei satuks. Kolmandaks: olekuteave kuulub monitooringusse või inventari, mitte avalikule lehele.

`expose_php = Off` eemaldab lisaks päise, millega PHP teatab oma versiooni igas vastuses. See ei asenda uuendust, kuid võtab automatiseeritud skanneritelt mugava teabe. Kes annab serveriligipääsu mitmele inimesele, peaks lisaks kokku leppima lihtsa reegli: testfailid kustutatakse samas töösammus, kus need loodi, mitte alles „hiljem“.

## Kuidas PHP SOS konkreetselt aitab?

- Me otsime teie veebijuurkataloogidest phpinfo-faile, testskripte ja muid vanu jäänuseid ning hindame iga leidu.
- Me hindame leitud failide juurdepääse ja ütleme teile, millised saladused peaksite välja vahetama.
- Me tõendame paikamisseisu PHP2Shelli vastu paketi changelogi ja protsessi käivitamise kaudu, mitte versiooninäidu kaudu.
- Me rakendame `disable_functions`, `expose_php` ja muid kõvendusmeetmeid [serveri kõvendamise](https://phpsos.de/et/leistungen/server-haertung/) raames püsivalt.

**Kokkuvõte:** phpinfo-fail luuakse sekunditega ja unustatakse sama kiiresti. Kes seda nüüd otsib ja eemaldab, sulgeb tarbetu andmelekke ning toetub paikamisseisu puhul töökindlatele tõenditele.


## Korduma kippuvad küsimused

**Kas phpinfo-fail on iseenesest turvaauk?**  
See ei ava juurdepääsu, kuid annab ründajatele serveri üksikasjaliku kirjelduse: versioon, moodulid, teed, sätted ja keskkonnast sõltuvalt ka keskkonnamuutujad. See hõlbustab sihipäraseid rünnakuid ja võib ligipääsuandmeid avalikustada.

**Kas versiooninumber phpinfo-s tõestab, et PHP2Shell on paigatud?**  
Ei. Distributsioonid ja hostingupakkujad paigaldavad parandusi sageli tagasiportimisena (backport), kuvatav number jääb siis samaks. Paikamisseisu tõendavad paketi changelog ja pakkuja kinnitus, lisaks kõigi PHP protsesside taaskäivitamine.

**Mida teha, kui phpinfo-fail oli pikemat aega avalik?**  
Kustutage fail, vaadake juurdepääsulogist, kes seda päris, ja vahetage välja kõik saladused, mis väljundis olid, näiteks andmebaasiparoolid või keskkonnamuutujatest pärit API-võtmed.

**Kas ma saan phpinfo() täielikult välja lülitada?**  
Jah, php.ini failis veebikonteksti jaoks valikuga disable_functions. Kontrollige enne, kas paneel või rakendus kasutab funktsiooni olekulehtede jaoks, ja taaskäivitage PHP protsessid seejärel.

## Allikad

- [PHP käsiraamat: phpinfo()](https://www.php.net/manual/de/function.phpinfo.php)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [php.net: turvateated](https://www.php.net/)
