Sitwazzjoni attwali: PHP2Shell. Żewġ vulnerabbiltajiet kritiċi ta' PHP (CVSS 9,2) jippermettu kodiċi malizzjuż mingħajr login. Patches mill-21/10/2026.X'għandu jsir issa →

Composer: il-ġestjoni tal-pakketti għal PHP

Composer iniżżel u jamministra l-libreriji li fuqhom jibnu l-proġetti moderni ta' PHP. Min jifhem composer.json, composer.lock u l-autoloader iwassal b'mod riproduċibbli u aktar sigur.

Stat 5 min. qariGħarfien dwar PHP

Fil-qosor: Composer huwa l-ġestjoni tal-pakketti għal PHP. Jaqra mill-fajl composer.json liema libreriji jeħtieġ proġett, iniżżilhom fil-folder vendor, iżomm il-verżjonijiet eżatti fil-composer.lock u joħloq autoloader li jsib il-klassijiet awtomatikament. Composer għalhekk jamministra l-kodiċi tal-applikazzjoni tagħkom, mhux l-interpretatur ta' PHP nnifsu: aġġornament ta' Composer ma jagħlaqx vulnerabbiltà f'PHP bħal PHP2Shell.

X'inhu Composer u għalxiex jintuża?

Kważi l-ebda applikazzjoni PHP llum ma tikkonsisti biss minn kodiċi proprju. Frameworks, libreriji tal-posta, ġenerazzjoni ta' PDF jew konnessjonijiet tal-ħlas jiġu miżjuda bħala pakketti lesti. Composer, il-ġestjoni tal-pakketti għal PHP, jiżgura li dawn il-pakketti jingħaqdu f'verżjonijiet xierqa u li kull dipendenza ġġib magħha d-dipendenzi proprji tagħha.

Għal min jieħu d-deċiżjonijiet dan ifisser: parti kbira mill-kodiċi li jaħdem fuq is-server tagħkom joriġina minn terzi. Dan huwa effiċjenti, imma jeħtieġ manutenzjoni. Għall-amministraturi u l-iżviluppaturi dan ifisser: min juża Composer sew jista' f'kull ħin isegwi liema verżjoni ta' liema librerija taħdem fil-produzzjoni.

Is-sors standard għall-pakketti huwa, skont id-dokumentazzjoni ta' Composer, Packagist.org. Sorsi oħra, pereżempju repositorys interni ta' aġenzija, jistgħu jiddaħħlu fil-composer.json taħt repositories.

composer.json, composer.lock u vendor: it-tliet komponenti

Composer jaħdem b'tliet affarijiet li wieħed għandu jaf qabel ma jieħu server jew jinkariga aġenzija.

Komponent Kontenut Jappartjeni fir-repository?
composer.json pakketti mixtieqa b'firxiet ta' verżjonijiet (require, require-dev), regoli ta' autoload, settings iva
composer.lock verżjonijiet eżatti solvuti tal-pakketti kollha, anki dawk indiretti iva, skont id-dokumentazzjoni ta' Composer espliċitament
vendor/ kodiċi mniżżel tal-pakketti u l-autoloader iġġenerat le, jinħoloq mal-installazzjoni

Taħt require jinsabu pakketti li l-applikazzjoni teħtieġ waqt it-tħaddim. Taħt require-dev jinsabu għodod għall-iżvilupp u t-testijiet, pereżempju frameworks tat-test jew analiżi statika. Din is-separazzjoni hija importanti, għax għodod tal-iżvilupp m'għandhom xejn x'jagħmlu fuq server tal-produzzjoni.

{
    "require": {
        "php": ">=8.3",
        "monolog/monolog": "^3.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^11.0"
    },
    "autoload": {
        "psr-4": { "App\\": "src/" }
    }
}

Il-verżjonijiet fl-eżempju ntgħażlu biss għal skop ta' illustrazzjoni. Liema verżjonijiet jeħtieġ il-proġett tagħkom jirriżulta mir-rekwiżiti tiegħu.

install jew update: id-differenza fit-tħaddim

Iż-żewġ kmandi jinstemgħu simili, imma għandhom konsegwenzi differenti ħafna.

  • composer install jaqra l-composer.lock u jinstalla eżattament il-verżjonijiet irreġistrati hemmhekk. Dan huwa riproduċibbli u jappartjeni fil-konsenja.
  • composer update jerġa' jsolvi d-dipendenzi kollha, iġib l-aħħar verżjonijiet li jaqblu u jerġa' jikteb il-composer.lock. Dan jappartjeni fl-iżvilupp, bit-testijiet li jsegwu.

Skont id-dokumentazzjoni ta' Composer, update wara l-kitba tal-fajl lock jwettaq ukoll verifika tas-sigurtà (audit), sakemm ma titfiex b'--no-audit. install ma jivverifikax awtomatikament; għal dan hemm l-għażla --audit.

Autoloading: kif Composer isib il-klassijiet

Composer joħloq il-fajl vendor/autoload.php. Hekk kif jiddaħħal darba, PHP tgħabbi kull klassi biss meta tkun meħtieġa. Għall-kodiċi proprju fit-taqsima autoload jiġi stabbilit liema namespace jinsab f'liema folder. Għal dan jiġi rrakkomandat PSR-4, standard tal-PHP-FIG. Kif jaħdem eżattament tispjega l-paġna Namespaces u autoloading; ħarsa ġenerali lejn l-istandards kollha tagħti l-paġna Standards PSR.

<?php
require __DIR__ . '/../vendor/autoload.php';

$log = new Monolog\Logger('app');   // jitgħabba awtomatikament meta jkun meħtieġ

Composer fil-produzzjoni: konsenja nadifa

Għall-konsenja ordni fissa wriet li taħdem tajjeb. L-aħjar taħdem f'pipeline tal-build u mhux bl-idejn fuq is-server.

  1. Nivverifikaw il-fajl lock: composer validate jiżgura li composer.json huwa validu u l-composer.lock aġġornat.
  2. Ninstallaw mingħajr pakketti tal-iżvilupp: composer install --no-dev jaqbeż require-dev.
  3. Nottimizzaw l-autoloader: --optimize-autoloader (qasir -o) jittrasforma r-regoli f'lista ta' klassijiet. B'--classmap-authoritative PHP tgħabbi klassijiet esklussivament minn din il-lista.
  4. Verifika tas-sigurtà: composer audit --locked jivverifika l-verżjonijiet mill-fajl lock kontra avviżi tas-sigurtà magħrufa u jirrapporta pakketti abbandunati.
  5. vendor barra mill-webroot: Biss il-folder pubbliku bl-iskrip ta' dħul għandu jintlaħaq permezz ta' URL.
composer validate
composer install --no-dev --optimize-autoloader
composer audit --locked --no-dev

composer outdated juri barra minn hekk liema pakketti installati għandhom verżjonijiet ġodda. Din hija l-bażi għal aġġornamenti ppjanati minflok azzjonijiet individwali frenetiċi.

Composer, sigurtà u PHP2Shell

Composer u PHP2Shell jolqtu żewġ livelli differenti. Il-vulnerabbiltajiet CVE-2026-109618 u CVE-2026-109619 jinsabu fl-interpretatur ta' PHP nnifsu. Ġew rranġati f'PHP 8.5.12, 8.4.27, 8.3.36 u 8.2.35, u l-proċessi kollha ta' PHP iridu jerġgħu jinbdew wara. Ebda composer update u ebda pakkett f'vendor ma jibdel xejn minn dan.

Madankollu Composer jappartjeni f'kull verifika wara inċident. Min iġib kodiċi malizzjuż fuq server jista' jibdel ukoll fajls f'vendor, u vendor/autoload.php jitgħabba ma' kull talba. composer install frisk mill-fajl lock ivverifikat f'direttorju vojt huwa għalhekk metodu tajjeb biex jerġa' jinbena l-istat tal-pakketti. Kif tivverifikaw regolarment id-dipendenzi għal vulnerabbiltajiet magħrufa jiddeskrivi l-gwida composer audit.

Importanti

Riżultat ħadra ta' composer audit ma jgħid xejn dwar l-istat tal-patches ta' PHP. Ivverifikaw ir-runtime ta' PHP separatament, pereżempju bis-Servizz ta' patch għal PHP tagħna.

Kif jgħin PHP SOS konkretament?

  • Niġbru għal kull applikazzjoni l-verżjoni ta' PHP, il-pakketti ta' Composer u l-istat tal-lock u nifirdu b'mod nadif bejn l-interpretatur u l-libreriji.
  • Nivverifikaw jekk vendor u l-fajl lock jaqblux ma' xulxin u jekk hemmx pakketti tal-iżvilupp jew fajls mibdula fil-produzzjoni.
  • Nistabbilixxu konsenja riproduċibbli b'install --no-dev, autoloader ottimizzat u audit.
  • Wara inċident nerġgħu nibnu l-istat tal-pakketti mill-fajl lock ivverifikat u niddokumentaw ir-riżultat.

Mistoqsijiet frekwenti

Il-composer.lock jrid ikun fir-repository ta' Git?

Iva. Id-dokumentazzjoni ta' Composer tirrakkomanda espliċitament li l-composer.lock jiġi kommessjat. Hekk biss l-iżvilupp, is-CI u l-produzzjoni jinstallaw eżattament l-istess verżjonijiet tal-pakketti.

X'inhi d-differenza bejn composer install u composer update?

install jinstalla l-verżjonijiet irreġistrati fil-composer.lock. update jerġa' jsolvi d-dipendenzi, iġib verżjonijiet ġodda li jaqblu u jerġa' jikteb il-composer.lock. Fuq is-server tal-produzzjoni jappartjeni biss install.

Aġġornament ta' Composer jagħlaq il-vulnerabbiltà ta' PHP2Shell?

Le. Composer jamministra l-libreriji tal-applikazzjoni tagħkom, mhux l-interpretatur ta' PHP. PHP2Shell tingħalaq biss b'aġġornament tar-runtime ta' PHP għal verżjoni rranġata u r-restart tal-proċessi kollha ta' PHP.

Fejn għandu jkun il-folder vendor?

Idealment barra mid-direttorju tal-web li jintlaħaq pubblikament. Ħafna frameworks iqiegħdu fil-webroot biss folder public, filwaqt li vendor jinsab livell 'il fuq.

Sorsi

Kuntatt immedjat

Kull siegħa tgħodd. Iktbu lilna issa.

Iddeskrivu fil-qosor is-sistema, il-verżjoni ta' PHP u dak li osservajtu. Nikkuntattjawkom, niċċaraw is-sitwazzjoni u naħdmu mill-bogħod sakemm l-inċident jingħalaq u jiġi ddokumentat.

Għajnuna immedjata