Praegune olukord: PHP2Shell. Kaks kriitilist PHP turvaauku (CVSS 9,2) lubavad kahjulikku koodi ilma sisselogimata. Paigad alates 21.10.2026.Mida nüüd teha →

PHP raamistike ülevaade

Raamistikud annavad PHP rakendustele struktuuri, marsruutimise ja turvaosi. See ülevaade näitab tuntud raamistikke, valikukriteeriume ja nende kaitse piire.

Seis Lugemisaeg 4 minPHP teadmised

Lühidalt: PHP raamistik on taaskasutatavast koodist karkass, mis lahendab veebirakenduse tüüpilised ülesanded juba ette: päringute suunamine õigele koodile, vormiandmete töötlemine, andmebaasidega suhtlemine, väljundi loomine. Tuntud PHP raamistikud on Laravel, Symfony, Laminas, CodeIgniter, Yii, CakePHP ja Slim. Raamistik toob kaasa turvaosi, kuid ei kaitse PHP interpretaatoris olevate aukude eest nagu PHP2Shell.

Mis on PHP raamistik?

Ilma raamistikuta kirjutab iga meeskond marsruutimise, vormikontrolli, sessioonid ja veakäsitluse uuesti. Raamistik annab selleks ette kindlad ehituskivid ja konventsioonid. See säästab aega, teeb koodi uutele arendajatele loetavaks ning koondab turvafunktsioonid ühte kohta, selle asemel et jaotada need sadade failide vahel.

Juhtkonna jaoks on eelkõige oluline üks tagajärg: raamistiku valikuga seote end aastateks selle väljalasketsüklile. Kui raamistik ei toeta enam mõnda PHP versiooni või ise enam ei hooldata, muutub iga uuendus kallimaks.

Enamik kaasaegseid raamistikke paigaldatakse Composeri kaudu ja järgivad PHP-FIG standardeid, näiteks PSR-4 autoloadingu või PSR-7 HTTP-sõnumite jaoks.

Tuntud PHP raamistikud võrdluses

Järgmine ülevaade kasutab projektide enda kirjeldusi nende avalehtedel. Hinnangud populaarsuse või turuosa järgi jätame teadlikult välja, sest selleks puudub usaldusväärne ühine allikas.

Raamistik Enesekirjeldus (mõtte järgi) Tüüpiline kasutus
Laravel veebirakenduste raamistik „patareid kaasas“ oma arendused, portaalid, SaaS
Symfony võimekas raamistik taaskasutatavate komponentidega suured, kauaealised rakendused; komponendid teistes projektides
Laminas Zend Frameworki kogukonna hooldatud jätk ettevõtterakendused, vahevara
CodeIgniter väike raamistik tugevate funktsioonidega väiksemad rakendused, madal sisenemislävi
Yii raamistik kaasaegsete rakenduste kiireks arenduseks veebirakendused, üksikute CMS-ide alus
CakePHP raamistik selgete MVC konventsioonidega klassikalised andmebaasirakendused
Slim mikroraamistik veebirakenduste ja API-de jaoks õhukesed API-d, vahevarateenused

Symfony nimetab oma avalehel Drupali, Laravelit, API Platformi ja Composerit projektidena, mis kasutavad Symfony komponente. Raamistik peitub seega sageli ka seal, kus seda otse ei näe. Kuidas see CMS-ide ja poodide puhul välja näeb, näitab leht CMS-id ja poesüsteemid PHP-l.

Peaaegu kõigi raamistike ühised osad

Hoolimata erinevast filosoofiast jagab enamik raamistikke sama ülesehitust. Kõik päringud jooksevad läbi ühe sisenemispunkti, esikontrolleri, enamasti public/index.php. Veebiserver annab selle faili kätte iga aadressi, mille jaoks päris faili ei ole.

# Näide: Nginx suunab tundmatud teed esikontrollerile
root /var/www/app/public;

location / {
    try_files $uri /index.php$is_args$args;
}

Apache'i puhul täidab selle ülesande enamasti ümberkirjutusreegel avalikus kaustas, teiste veebiserverite puhul sarnane reegel. Kõigil juhtudel on oluline, et veebiserver osutaks kaustale public, mitte projekti põhikataloogile. Valesti seatud dokumendikataloog kuulub sagedaseimate põhjuste hulka, miks seadistusfailid äkki avalikult kättesaadavaks muutuvad.

Turvalisuse eelis: veebijuures asub ainult kaust public. Seadistus, lähtekood ja vendor asuvad ühe taseme kõrgemal ja URL-i kaudu kättesaamatud. Seejärel võtab ruuter üle seostamise kontrolleriga, vahevara kontrollib sisselogimist või CSRF-tokenit ja mallimootor loob väljundi automaatse maskeerimisega.

Kuidas raamistikku valida?

Uue arenduse või olemasoleva projekti ülevõtmise puhul aitavad need küsimused:

  1. Hooldus ja väljalasketsükkel: Kui kaua versioone turvauuendustega varustatakse ja kas on olemas pikendatud toega versioone?
  2. PHP toetus: Kas kasutatav raamistiku versioon töötab PHP versioonil, mis ise veel turvauuendusi saab? See on kirjas projekti nõuetes.
  3. Meeskond ja teenusepakkuja: Kas meeskond tunneb raamistikku ja kas leiate hädaolukorras selle jaoks spetsialiste?
  4. Ökosüsteem: Kas teie nõuete jaoks on hooldatud pakette või tuleks palju ise ehitada?
  5. Standardid: Kui raamistik järgib PSR-liideseid, saab ehituskive hiljem lihtsamini asendada.

Laraveli ja Symfony projektide kaitsmiseks on meil omad lehed: Laraveli rakenduste kaitsmine ja Symfony rakenduste kaitsmine.

Mida raamistik turvalisuse jaoks pakub ja mida mitte

Raamistikud võtavad arendajatelt ära palju veaallikaid: ettevalmistatud andmebaasipäringud SQL-injektsiooni vastu, automaatne maskeerimine Cross-Site-Scriptingu vastu, CSRF-kaitse vormidele, turvalised paroolide räsid. See toimib aga ainult siis, kui meeskond neid ehituskive kasutab ja neist mööda ei mine.

PHP2Shelli vastu see kõik ei aita. CVE-2026-109618 ja CVE-2026-109619 asuvad PHP interpretaatoris. PHP meeskond hindab riski mod_php puhul kõige suuremaks; seal näidati ekspluateerimist enne, kui rakenduse kood üldse käivitub. Raamistik ei jõua seega üldse mängu. Abi annab ainult uuendus versioonile PHP 8.5.12, 8.4.27, 8.3.36 või 8.2.35 ja kõigi PHP protsesside taaskäivitus.

Oluline

Raamistiku uuendus ja PHP uuendus on kaks eraldi ülesannet. Mõlemad kuuluvad hooldusesse, kuid ainult PHP uuendus sulgeb PHP2Shelli.

Vanemate projektide puhul lisandub veel üks risk: kui rakendus on kinni vanas raamistiku versioonis, on see sageli kinni ka vanas PHP versioonis. PHP 8.1 ja vanemate jaoks PHP projektilt ametlikke uuendusi enam ei ole.

Kuidas PHP SOS konkreetselt aitab?

  • Selgitame välja teie rakenduse raamistiku, versiooni ja PHP nõuded ning kontrollime, kas mõlemad saavad veel turvauuendusi.
  • Kontrollime ülesehitust: kas veebijuures asub ainult public, kas seadistus ja vendor on kaitstud?
  • Planeerime raamistiku ja PHP uuendused eraldi, testime need ja paigaldame kõigi workerite taaskäivitusega.
  • Oma arenduste jaoks pakume turvaauditit ja läbistustesti, mis kontrollib sihipäraselt raamistiku kaitsefunktsioonide kasutamist.

Korduma kippuvad küsimused

Milline PHP raamistik on parim?

See sõltub projektist. Otsustavad on rakenduse suurus ja eluiga, meeskonna oskused, projekti hooldus ning ajakohaste PHP versioonide toetus. Hästi hooldatud, meeskonnale tuttav raamistik on enamasti parem valik kui hetkel kõige populaarsem.

Kas raamistik kaitseb PHP2Shelli eest?

Ei. PHP2Shell asub PHP interpretaatoris ja PHP meeskonna andmetel näidati mod_php puhul ekspluateerimist enne, kui rakenduse kood üldse käivitub. Ükski raamistiku uuendus ei asenda PHP käitusaja uuendust ja kõigi workerite taaskäivitust.

Mis on mikroraamistik?

Mikroraamistik pakub ainult tuuma, tavaliselt marsruutimist, vahevara ning päringu- ja vastuseobjekte. Andmebaasipääsu, mallid või vormid valitakse ise juurde. Slim nimetab ennast näiteks ise PHP mikroraamistikuks.

Mida tähendab see, kui CMS kasutab Symfony komponente?

See kasutab Symfony üksikuid ehituskive, näiteks HTTP töötluse või konsooli jaoks, võtmata üle kogu raamistikku. Nende komponentide turvateated puudutavad siis ka CMS-i, mis loeb uuenduste planeerimisel.

Allikad

Kohene kontakt

Iga tund loeb. Kirjutage meile kohe.

Kirjeldage lühidalt süsteemi, PHP versiooni ja tähelepanekut. Võtame teiega ühendust, selgitame olukorra välja ja töötame kaugtööna, kuni intsident on lõpetatud ja dokumenteeritud.

Kohene abi