Dabartinė padėtis: PHP2Shell. Du kritiniai PHP pažeidžiamumai (CVSS 9,2) leidžia vykdyti kenkėjišką kodą be prisijungimo. Pataisos nuo 2026-10-21.Ką dabar daryti →

PHP karkasų (frameworks) apžvalga

Karkasai suteikia PHP programoms struktūrą, maršrutizavimą ir saugumo elementus. Ši apžvalga rodo žinomus karkasus, pasirinkimo kriterijus ir jų apsaugos ribas.

Būsena 4 min. skaitymoPHP žinios

Trumpai: PHP karkasas (framework) yra pakartotinai naudojamo kodo pagrindas, kuris jau išsprendžia tipines žiniatinklio programos užduotis: nukreipia užklausas į tinkamą kodą, apdoroja formų duomenis, kreipiasi į duomenų bazes, kuria išvestį. Žinomi PHP karkasai yra Laravel, Symfony, Laminas, CodeIgniter, Yii, CakePHP ir Slim. Karkasas turi saugumo elementų, bet neapsaugo nuo spragų PHP interpretatoriuje, tokių kaip PHP2Shell.

Kas yra PHP karkasas?

Be karkaso kiekviena komanda iš naujo rašo maršrutizavimą, formų tikrinimą, sesijas ir klaidų tvarkymą. Karkasas tam nustato fiksuotas dalis ir konvencijas. Tai taupo laiką, daro kodą skaitomą naujiems kūrėjams ir saugumo funkcijas sutelkia vienoje vietoje, užuot jas paskirsčius šimtuose failų.

Vadovybei svarbiausia viena pasekmė: pasirinkdami karkasą, keleriems metams susisiejate su jo leidimų ciklu. Jei karkasas nebepalaiko PHP versijos arba pats nebeprižiūrimas, kiekvienas atnaujinimas pabrangsta.

Dauguma šiuolaikinių karkasų diegiami per Composer ir laikosi PHP-FIG standartų, pavyzdžiui, PSR-4 automatiniam įkėlimui ar PSR-7 HTTP pranešimams.

Žinomų PHP karkasų palyginimas

Toliau pateikta apžvalga naudoja projektų savęs aprašymus jų pradžios puslapiuose. Vertinimus pagal populiarumą ar rinkos dalį sąmoningai praleidžiame, nes tam nėra patikimo bendro šaltinio.

Karkasas Savęs aprašymas (pagal prasmę) Tipinis naudojimas
Laravel karkasas „su baterijomis“ žiniatinklio programoms individualūs sprendimai, portalai, SaaS
Symfony galingas karkasas su pakartotinai naudojamais komponentais didelės, ilgaamžės programos; komponentai kituose projektuose
Laminas bendruomenės prižiūrimas Zend Framework tęsinys įmonių programos, tarpinė programinė įranga
CodeIgniter mažas karkasas su stipriomis funkcijomis mažesnės programos, žemas įėjimo slenkstis
Yii karkasas greitam šiuolaikinių programų kūrimui žiniatinklio programos, atskirų CMS pagrindas
CakePHP karkasas su aiškiomis MVC konvencijomis klasikinės duomenų bazių programos
Slim mikrokarkasas žiniatinklio programoms ir API lieknos API, tarpinės programinės įrangos paslaugos

Symfony savo pradžios puslapyje kaip projektus, naudojančius Symfony komponentus, nurodo Drupal, Laravel, API Platform ir Composer. Taigi karkasas dažnai slypi ir ten, kur jo tiesiogiai nematyti. Kaip tai atrodo CMS ir parduotuvėse, rodo puslapis CMS ir parduotuvių sistemos PHP pagrindu.

Bendros beveik visų karkasų dalys

Nepaisant skirtingos filosofijos, dauguma karkasų turi panašią sandarą. Visos užklausos eina per vieną įėjimo tašką, priekinį valdiklį (front controller), dažniausiai public/index.php. Žiniatinklio serveris jam perduoda kiekvieną adresą, kuriam nėra tikro failo.

# Pavyzdys: Nginx nežinomus kelius nukreipia į priekinį valdiklį
root /var/www/app/public;

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

Apache atveju šią užduotį dažniausiai atlieka perrašymo taisyklė viešame aplanke, kituose žiniatinklio serveriuose panaši taisyklė. Visais atvejais svarbu, kad žiniatinklio serveris rodytų į aplanką public, o ne į pagrindinį projekto katalogą. Neteisingai nustatytas dokumentų katalogas yra viena dažniausių priežasčių, kodėl konfigūracijos failai staiga tampa viešai pasiekiami.

Privalumas saugumui: žiniatinklio šaknyje yra tik aplankas public. Konfigūracija, pirminis kodas ir vendor yra vienu lygiu aukščiau ir per URL nepasiekiami. Po to maršrutizatorius priskiria valdiklį (controller), tarpinė programinė įranga tikrina prisijungimą ar CSRF žetoną, o šablonų variklis kuria išvestį su automatiniu simbolių pakeitimu (escaping).

Kaip pasirinkti karkasą?

Naujai kūrybai ar esamo projekto perėmimui padeda šie klausimai:

  1. Priežiūra ir leidimų ciklas: kiek laiko versijos gauna saugumo atnaujinimus ir ar yra versijų su pratęstu palaikymu?
  2. PHP palaikymas: ar naudojama karkaso versija veikia su PHP versija, kuri pati dar gauna saugumo atnaujinimus? Tai nurodyta projekto reikalavimuose.
  3. Komanda ir paslaugų teikėjas: ar komanda pažįsta karkasą ir ar nelaimės atveju rasite jo specialistų?
  4. Ekosistema: ar yra prižiūrimų paketų jūsų poreikiams, ar daug reikėtų kurti patiems?
  5. Standartai: jei karkasas laikosi PSR sąsajų, dalis vėliau lengviau pakeičiamos.

Laravel ir Symfony projektams turime atskirus apsaugos puslapius: Laravel programų apsauga ir Symfony programų apsauga.

Ką karkasas duoda saugumui ir ko neduoda

Karkasai kūrėjams nuima daug klaidų šaltinių: parengtos duomenų bazės užklausos nuo SQL injekcijos, automatinis simbolių pakeitimas nuo Cross-Site Scripting, CSRF apsauga formoms, saugūs slaptažodžių maišos. Tačiau tai veikia tik tada, kai komanda šias dalis naudoja, o ne apeina.

Nuo PHP2Shell visa tai nepadeda. CVE-2026-109618 ir CVE-2026-109619 yra PHP interpretatoriuje. PHP komanda didžiausią riziką priskiria mod_php; ten parodytas exploit dar prieš pradedant vykdyti programos kodą. Taigi karkasas iš viso nepasiekia eilės. Padeda tik atnaujinimas iki PHP 8.5.12, 8.4.27, 8.3.36 ar 8.2.35 ir visų PHP procesų paleidimas iš naujo.

Svarbu

Karkaso atnaujinimas ir PHP atnaujinimas yra dvi atskiros užduotys. Abi priklauso priežiūrai, bet PHP2Shell uždaro tik PHP atnaujinimas.

Senesniuose projektuose atsiranda dar viena rizika: jei programa užstrigusi prie senos karkaso versijos, dažnai ji užstrigusi ir prie senos PHP versijos. PHP 8.1 ir senesnėms PHP projektas oficialių atnaujinimų nebeteikia.

Kaip PHP SOS padeda konkrečiai?

  • Nustatome jūsų programos karkasą, versiją ir PHP reikalavimus ir išsiaiškiname, ar abu dar gauna saugumo atnaujinimus.
  • Tikriname sandarą: ar žiniatinklio šaknyje yra tik public, ar konfigūracija ir vendor apsaugoti?
  • Karkaso ir PHP atnaujinimus planuojame atskirai, išbandome ir įdiegiame su visų darbinių procesų paleidimu iš naujo.
  • Individualiems sprendimams siūlome saugumo auditą ir įsiskverbimo testą, kuris tikslingai tikrina karkaso apsaugos funkcijų naudojimą.

Dažni klausimai

Kuris PHP karkasas geriausias?

Tai priklauso nuo projekto. Lemia programos dydis ir gyvavimo trukmė, komandos žinios, projekto priežiūra ir aktualių PHP versijų palaikymas. Gerai prižiūrimas, komandai pažįstamas karkasas dažniausiai yra geresnis pasirinkimas nei šiuo metu populiariausias.

Ar karkasas apsaugo nuo PHP2Shell?

Ne. PHP2Shell yra PHP interpretatoriuje, o pasak PHP komandos, mod_php atveju exploit parodytas dar prieš pradedant vykdyti programos kodą. Joks karkaso atnaujinimas neatstoja PHP vykdymo aplinkos atnaujinimo ir visų darbinių procesų paleidimo iš naujo.

Kas yra mikrokarkasas (micro-framework)?

Mikrokarkasas teikia tik branduolį, paprastai maršrutizavimą, tarpinę programinę įrangą (middleware) ir užklausos bei atsakymo objektus. Prieigą prie duomenų bazės, šablonus ar formas pasirenkate patys. Slim, pavyzdžiui, pats save vadina PHP mikrokarkasu.

Ką reiškia, kad CMS naudoja Symfony komponentus?

Jis naudoja atskiras Symfony dalis, pavyzdžiui, HTTP apdorojimui ar konsolei, neperimdamas viso karkaso. Saugumo pranešimai apie šiuos komponentus tuomet liečia ir CMS, o tai svarbu planuojant atnaujinimus.

Šaltiniai

Skubus kontaktas

Kiekviena valanda svarbi. Parašykite mums dabar.

Trumpai aprašykite sistemą, PHP versiją ir pastebėjimus. Mes atsakysime, išsiaiškinsime padėtį ir dirbsime nuotoliu, kol incidentas bus užbaigtas ir dokumentuotas.

Skubi pagalba