Aktuālā situācija: PHP2Shell. Divas kritiskas PHP ievainojamības (CVSS 9.2) ļauj izpildīt ļaunprātīgu kodu bez pieteikšanās. Ielāpi kopš 21.10.2026.Kas jādara tagad →

PHP ietvari (frameworks) pārskatā

Ietvari PHP lietojumprogrammām dod struktūru, maršrutēšanu un drošības elementus. Pārskats rāda zināmos ietvarus, izvēles kritērijus un to aizsardzības robežas.

Aktuāls uz 4 min lasīšanas laiksPHP zināšanas

Īsi: PHP ietvars (framework) ir pamatkarkass no atkārtoti lietojama koda, kas jau risina tipiskus tīmekļa lietojumprogrammas uzdevumus: pieprasījumu novirzīšanu uz pareizo kodu, veidlapu datu apstrādi, darbu ar datubāzēm, izvades veidošanu. Zināmi PHP ietvari ir Laravel, Symfony, Laminas, CodeIgniter, Yii, CakePHP un Slim. Ietvars nes līdzi drošības elementus, bet neaizsargā pret ievainojamībām PHP interpretatorā, piemēram, PHP2Shell.

Kas ir PHP ietvars?

Bez ietvara katra komanda maršrutēšanu, veidlapu pārbaudi, sesijas un kļūdu apstrādi raksta no jauna. Ietvars šim nolūkam nosaka fiksētus elementus un konvencijas. Tas ietaupa laiku, padara kodu lasāmu jauniem izstrādātājiem un drošības funkcijas apvieno vienā vietā, nevis izkaisa pa simtiem failu.

Vadībai svarīga ir galvenokārt viena sekas: izvēloties ietvaru, uz gadiem saistāties ar tā izlaidumu ciklu. Ja ietvars PHP versiju vairs neatbalsta vai pats vairs netiek uzturēts, katrs atjauninājums kļūst dārgāks.

Lielākā daļa modernu ietvaru tiek instalēti ar Composer un ievēro PHP-FIG standartus, piemēram, PSR-4 autoloading vai PSR-7 HTTP ziņojumiem.

Zināmie PHP ietvari salīdzinājumā

Turpmākais pārskats izmanto projektu pašaprakstus to sākumlapās. Vērtējumus pēc popularitātes vai tirgus daļas apzināti nesniedzam, jo tam nav uzticama kopīga avota.

Ietvars Pašraksturojums (pēc jēgas) Tipisks pielietojums
Laravel ietvars „baterijas komplektā“ tīmekļa lietojumprogrammām paštaisīti risinājumi, portāli, SaaS
Symfony jaudīgs ietvars ar atkārtoti lietojamām komponentēm lielas, ilgdzīvojošas lietojumprogrammas; komponentes citos projektos
Laminas kopienas uzturēta Zend Framework turpināšana uzņēmumu lietojumprogrammas, middleware
CodeIgniter mazs ietvars ar spēcīgām funkcijām mazākas lietojumprogrammas, zems ieejas slieksnis
Yii ietvars ātrai moderno lietojumprogrammu izstrādei tīmekļa lietojumprogrammas, atsevišķu CMS pamats
CakePHP ietvars ar skaidrām MVC konvencijām klasiskas datubāzu lietojumprogrammas
Slim mikroietvars tīmekļa lietojumprogrammām un API slaidi API, middleware pakalpojumi

Symfony savā sākumlapā min Drupal, Laravel, API Platform un Composer kā projektus, kas izmanto Symfony komponentes. Ietvars tātad bieži atrodas arī tur, kur to tieši neredz. Kā tas izskatās CMS un veikalos, parāda lapa CMS un veikalu sistēmas uz PHP.

Kopīgi gandrīz visu ietvaru elementi

Neraugoties uz atšķirīgo filozofiju, lielākajai daļai ietvaru ir līdzīga uzbūve. Visi pieprasījumi iet caur vienu ieejas punktu, front controller, parasti public/index.php. Tīmekļa serveris katru adresi, kurai nav īsta faila, nodod šim failam.

# Piemērs: Nginx nezināmus ceļus novirza uz front controller
root /var/www/app/public;

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

Apache gadījumā šo uzdevumu parasti pilda pārrakstīšanas noteikums publiskajā mapē, citiem tīmekļa serveriem līdzīgs noteikums. Visos gadījumos svarīgi, lai tīmekļa serveris norādītu uz mapi public, nevis uz projekta galveno direktoriju. Nepareizi iestatīts dokumentu direktorijs ir viens no biežākajiem iemesliem, kāpēc konfigurācijas faili pēkšņi kļūst publiski pieejami.

Drošības priekšrocība: tikai mape public atrodas webroot. Konfigurācija, pirmkods un vendor atrodas par vienu līmeni augstāk un ar URL nav sasniedzami. Pēc tam maršrutētājs piešķir kontrolieri (controller), middleware pārbauda pieteikšanos vai CSRF tokenu, un veidņu dzinējs veido izvadi ar automātisku maskēšanu.

Kā izvēlēties ietvaru?

Jaunizstrādei vai esoša projekta pārņemšanai palīdz šie jautājumi:

  1. Apkope un izlaidumu cikls: Cik ilgi versijas tiek apgādātas ar drošības atjauninājumiem un vai ir versijas ar pagarinātu atbalstu?
  2. PHP atbalsts: Vai izmantotā ietvara versija darbojas PHP versijā, kas pati vēl saņem drošības atjauninājumus? Tas ir norādīts projekta prasībās.
  3. Komanda un pakalpojumu sniedzējs: Vai komanda ietvaru pazīst un vai ārkārtas gadījumā tam atradīsiet speciālistus?
  4. Ekosistēma: Vai ir uzturētas pakotnes jūsu prasībām vai daudz kas būtu jābūvē pašam?
  5. Standarti: Ja ietvars ievēro PSR saskarnes, elementus vēlāk var vieglāk nomainīt.

Laravel un Symfony projektiem mums ir savas aizsardzības lapas: Laravel lietojumprogrammu aizsardzība un Symfony lietojumprogrammu aizsardzība.

Ko ietvars drošībai dod un ko ne

Ietvari izstrādātājiem noņem daudzus kļūdu avotus: sagatavotus datubāzes vaicājumus pret SQL injekciju, automātisku maskēšanu pret Cross-Site Scripting, CSRF aizsardzību veidlapām, drošus paroļu jaucējkodus. Tas tomēr darbojas tikai tad, ja komanda šos elementus lieto un neapiet.

Pret PHP2Shell tas viss nepalīdz. CVE-2026-109618 un CVE-2026-109619 atrodas PHP interpretatorā. PHP komanda risku mod_php gadījumā vērtē visaugstāk; tur exploit tika demonstrēts, vēl pirms tiek izpildīts lietojumprogrammas kods. Ietvars tātad vispār netiek pie vārda. Palīdz tikai atjauninājums uz PHP 8.5.12, 8.4.27, 8.3.36 vai 8.2.35 un visu PHP procesu pārstartēšana.

Svarīgi

Ietvara atjauninājums un PHP atjauninājums ir divi atsevišķi uzdevumi. Abi pieder apkopei, bet PHP2Shell aizver tikai PHP atjauninājums.

Vecākiem projektiem klāt nāk vēl viens risks: ja lietojumprogramma ir piesaistīta vecai ietvara versijai, bieži tā ir piesaistīta arī vecai PHP versijai. PHP 8.1 un vecākām versijām PHP projekts oficiālu atjauninājumu vairs nesniedz.

Kā PHP SOS palīdz konkrēti?

  • Mēs noskaidrojam jūsu lietojumprogrammas ietvaru, versiju un PHP prasības un konstatējam, vai abi vēl saņem drošības atjauninājumus.
  • Mēs pārbaudām uzbūvi: vai webroot atrodas tikai public, vai konfigurācija un vendor ir aizsargāti?
  • Mēs ietvara un PHP atjauninājumus plānojam atsevišķi, testējam un ieviešam ar visu darbprocesu pārstartēšanu.
  • Paštaisītiem risinājumiem piedāvājam drošības auditu un penetrācijas testu, kas mērķtiecīgi pārbauda ietvara aizsardzības funkciju izmantošanu.

Biežāk uzdotie jautājumi

Kurš PHP ietvars ir labākais?

Tas atkarīgs no projekta. Izšķiroši ir lietojumprogrammas lielums un mūžs, komandas zināšanas, projekta apkope un aktuālu PHP versiju atbalsts. Labi uzturēts, komandai pazīstams ietvars parasti ir labāka izvēle nekā tikko populārākais.

Vai ietvars aizsargā pret PHP2Shell?

Nē. PHP2Shell atrodas PHP interpretatorā, un saskaņā ar PHP komandu mod_php gadījumā exploit tika demonstrēts, vēl pirms tiek izpildīts lietojumprogrammas kods. Neviens ietvara atjauninājums neaizstāj PHP izpildes vides atjauninājumu un visu darbprocesu pārstartēšanu.

Kas ir mikroietvars (micro-framework)?

Mikroietvars piegādā tikai kodolu, parasti maršrutēšanu, starpprogrammatūru (middleware) un pieprasījuma un atbildes objektus. Piekļuvi datubāzei, veidnes vai veidlapas izvēlas pats. Slim, piemēram, pats sevi dēvē par mikroietvaru PHP.

Ko nozīmē, ja CMS izmanto Symfony komponentes?

Tas izmanto atsevišķus Symfony elementus, piemēram, HTTP apstrādei vai konsolei, nepārņemot visu ietvaru. Drošības ziņojumi par šīm komponentēm tad skar arī CMS, kas ir svarīgi atjauninājumu plānošanā.

Avoti

Tūlītējs kontakts

Katra stunda ir svarīga. Rakstiet mums tūlīt.

Īsi aprakstiet sistēmu, PHP versiju un novēroto. Mēs sazināsimies, noskaidrosim situāciju un strādāsim attālināti, līdz incidents ir slēgts un dokumentēts.

Tūlītēja palīdzība