Na kratko: Ogrodje PHP je osnovno ogrodje iz ponovno uporabne kode, ki že rešuje značilne naloge spletne aplikacije: zahteve usmeriti na pravo kodo, obdelati podatke iz obrazcev, nagovarjati podatkovne zbirke, ustvarjati izpise. Znana ogrodja PHP so Laravel, Symfony, Laminas, CodeIgniter, Yii, CakePHP in Slim. Ogrodje prinaša varnostne gradnike, a ne ščiti pred ranljivostmi v interpreterju PHP, kot je PHP2Shell.
Kaj je ogrodje PHP?
Brez ogrodja vsaka ekipa znova piše usmerjanje, preverjanje obrazcev, seje in obravnavo napak. Ogrodje za to predpiše trdne gradnike in konvencije. To prihrani čas, kodo naredi berljivo za nove razvijalce in varnostne funkcije zbere na enem mestu, namesto da bi jih razpršilo po stotinah datotek.
Za vodstvo je predvsem ena posledica pomembna: z izbiro ogrodja se za leta vežete na njegov cikel izdaj. Če ogrodje različice PHP ne podpira več ali se samo ne vzdržuje več, postane vsaka posodobitev dražja.
Večina sodobnih ogrodij se namešča prek Composerja in upošteva standarde PHP-FIG, na primer PSR-4 za samodejno nalaganje ali PSR-7 za sporočila HTTP.
Znana ogrodja PHP v primerjavi
Naslednji pregled uporablja samoopise projektov na njihovih začetnih straneh. Ocen po priljubljenosti ali tržnem deležu namenoma ne podajamo, ker zanje ni zanesljivega skupnega vira.
| Ogrodje | Samoopis (po smislu) | Značilna uporaba |
|---|---|---|
| Laravel | ogrodje z „baterijami v kompletu“ za spletne aplikacije | lasten razvoj, portali, SaaS |
| Symfony | zmogljivo ogrodje s ponovno uporabnimi komponentami | velike, dolgožive aplikacije; komponente v drugih projektih |
| Laminas | skupnostno vzdrževano nadaljevanje Zend Framework | podjetniške aplikacije, middleware |
| CodeIgniter | majhno ogrodje z močnimi funkcijami | manjše aplikacije, nizek vstopni prag |
| Yii | ogrodje za hiter razvoj sodobnih aplikacij | spletne aplikacije, podlaga posameznih CMS-jev |
| CakePHP | ogrodje z jasnimi konvencijami MVC | klasične aplikacije s podatkovno zbirko |
| Slim | mikro ogrodje za spletne aplikacije in API | vitki API, storitve middleware |
Symfony na svoji začetni strani kot projekte, ki uporabljajo komponente Symfony, navaja Drupal, Laravel, API Platform in Composer. Ogrodje je torej pogosto tudi tam, kjer ga neposredno ne vidimo. Kako je to pri CMS-jih in spletnih trgovinah, kaže stran CMS-ji in sistemi za spletne trgovine na PHP.
Skupni gradniki skoraj vseh ogrodij
Kljub različnim filozofijam večina ogrodij deli zgradbo. Vse zahteve tečejo prek ene same vstopne točke, front controllerja, praviloma public/index.php. Spletni strežnik zanjo posreduje vsak naslov, za katerega ni prave datoteke.
# Primer: Nginx neznane poti usmeri na front controller
root /var/www/app/public;
location / {
try_files $uri /index.php$is_args$args;
}
Pri Apacheju to nalogo praviloma prevzame pravilo za prepisovanje v javni mapi, pri drugih spletnih strežnikih primerljivo pravilo. Pomembno je v vseh primerih, da spletni strežnik kaže na mapo public, ne na glavni imenik projekta. Napačno nastavljen imenik dokumentov sodi med najpogostejše vzroke, da konfiguracijske datoteke nenadoma postanejo javno dosegljive.
Prednost za varnost: samo mapa public leži v korenu spleta. Konfiguracija, izvorna koda in vendor ležijo eno raven više in po URL niso dosegljivi. Nato usmerjevalnik prevzame dodelitev kontrolerju, middleware preveri prijavo ali žeton CSRF, mehanizem predlog pa ustvari izpis s samodejnim maskiranjem.
Kako izberete ogrodje?
Pri novem razvoju ali prevzemu obstoječega projekta pomagajo ta vprašanja:
- Vzdrževanje in cikel izdaj: kako dolgo se različice oskrbujejo z varnostnimi posodobitvami in ali obstajajo različice s podaljšano podporo?
- Podpora PHP: ali uporabljena različica ogrodja teče na različici PHP, ki sama še prejema varnostne posodobitve? To piše v zahtevah projekta.
- Ekipa in izvajalec: ali ekipa ogrodje pozna in ali boste v sili našli strokovnjake zanj?
- Ekosistem: ali obstajajo vzdrževani paketi za vaše zahteve ali bi bilo treba veliko zgraditi sami?
- Standardi: če ogrodje upošteva vmesnike PSR, je gradnike pozneje lažje zamenjati.
Za projekte Laravel in Symfony imamo lastne strani o zavarovanju: Zavarovanje aplikacij Laravel in Zavarovanje aplikacij Symfony.
Kaj ogrodje prinese za varnost in česa ne
Ogrodja razvijalcem odvzamejo veliko virov napak: pripravljene poizvedbe proti SQL injection, samodejno maskiranje proti cross-site scriptingu, zaščita CSRF za obrazce, varne zgoščene vrednosti gesel. To pa deluje samo, če ekipa te gradnike uporablja in jih ne obide.
Proti PHP2Shell vse to ne pomaga. CVE-2026-109618 in CVE-2026-109619 ležita v interpreterju PHP. Ekipa PHP tveganje pri mod_php ocenjuje kot najvišje; tam je bil exploit prikazan, še preden sploh teče koda aplikacije. Ogrodje torej sploh ne pride na vrsto. Pomaga samo posodobitev na PHP 8.5.12, 8.4.27, 8.3.36 ali 8.2.35 in ponovni zagon vseh procesov PHP.
Posodobitev ogrodja in posodobitev PHP sta dve ločeni nalogi. Obe sodita v vzdrževanje, a samo posodobitev PHP zapre PHP2Shell.
Pri starejših projektih se doda še eno tveganje: če aplikacija visi na stari različici ogrodja, pogosto visi tudi na stari različici PHP. Za PHP 8.1 in starejše projekt PHP uradnih posodobitev ne izdaja več.
Kako PHP SOS pomaga konkretno?
- Ugotovimo ogrodje, različico in zahteve PHP vaše aplikacije ter preverimo, ali oboje še prejema varnostne posodobitve.
- Preverimo zgradbo: ali v korenu spleta leži samo
public, ali sta konfiguracija invendorzaščitena? - Posodobitve ogrodja in PHP načrtujemo ločeno, jih preizkusimo in namestimo s ponovnim zagonom vseh workerjev.
- Za lasten razvoj ponujamo varnostni pregled in penetracijski test, ki ciljno preveri uporabo zaščitnih funkcij ogrodja.
Pogosta vprašanja
Katero ogrodje PHP je najboljše?
To je odvisno od projekta. Odločilni so velikost in življenjska doba aplikacije, znanje v ekipi, vzdrževanje projekta in podpora aktualnih različic PHP. Dobro vzdrževano ogrodje, ki ga ekipa pozna, je praviloma boljša izbira kot trenutno najbolj priljubljeno.
Ali ogrodje ščiti pred PHP2Shell?
Ne. PHP2Shell je v interpreterju PHP, po ekipi PHP pa je bil pri mod_php exploit prikazan, še preden sploh teče koda aplikacije. Nobena posodobitev ogrodja ne nadomesti posodobitve izvajalnega okolja PHP in ponovnega zagona vseh workerjev.
Kaj je mikro ogrodje?
Mikro ogrodje dobavi samo jedro, značilno usmerjanje, middleware in objekte zahteve in odgovora. Dostop do podatkovne zbirke, predloge ali obrazce izberete sami. Slim se na primer sam opisuje kot mikro ogrodje za PHP.
Kaj pomeni, če CMS uporablja komponente Symfony?
Uporablja posamezne gradnike Symfony, na primer za obdelavo HTTP ali konzolo, ne da bi prevzel celotno ogrodje. Varnostna obvestila o teh komponentah potem zadevajo tudi CMS, kar šteje pri načrtovanju posodobitev.