Fil-qosor: Aġġornament tal-image Docker ta' PHP huwa obbligu kontra PHP2Shell, u ma jsirx waħdu. Trid tibni jew tniżżel l-image b'verżjoni rranġata ta' PHP, terġa' toħloq kull kontenitur minnha u tivverifika li fil-kontenitur li jaħdem tkun qed taħdem 8.5.12, 8.4.27, 8.3.36 jew 8.2.35. Restart sempliċi tal-kontenitur mhuwiex biżżejjed.
Għaliex il-kontenituri mhumiex awtomatikament sikuri
Image Docker hija stampa ffriżata. Il-PHP fiha jibqa' fl-istat li kellu meta nbniet, anke jekk fuq l-host ilhom jinstallaw aġġornamenti. Aġġornament tal-pakkett fuq is-sistema tal-host ma jibdel xejn fil-PHP tal-kontenitur.
Jiżdiedu ostakli tipiċi: images mibnija xhur ilu u mhux mittiefsa minn dak iż-żmien, images bażi b'tag fiss bħal php:8.3.35-fpm, caches lokali li waqt il-bini jerġgħu jużaw l-image bażi l-qadima u kontenituri li ġew mibdija mill-ġdid imma qatt ma nħolqu mill-ġdid. Huma affettwati l-modalitajiet tat-tħaddim kollha li huma komuni fil-kontenituri: PHP-FPM, Apache b'mod_php u FrankenPHP.
Jiżdied mistoqsija ta' responsabbiltà. F'ħafna kumpaniji aġenzija jew żviluppatur ibnew l-image darba, imma titħaddem mill-IT interna jew minn hoster. Allura ħadd ma jħossu responsabbli għall-istat ta' PHP fl-image. Għalhekk l-ewwel iċċaraw min jibni l-image, fejn jinsab id-Dockerfile u min jista' jqassam images ġodda.
Iċċekkjaw il-verżjoni ta' PHP fil-kontenitur
Iċċekkjaw il-kontenitur li jaħdem, mhux biss id-Dockerfile. Il-kmandi huma biss ta' qari.
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.CreatedAt}}"
docker exec <container> php -v
docker exec <container> php -i | grep -E "^PHP Version|Server API"
docker image inspect <image> --format "{{.Created}}"
Jekk l-image tuża pakketti tad-distribuzzjoni minflok builds uffiċjali ta' PHP, iċċekkjaw l-istat tal-pakkett fil-kontenitur. L-ismijiet tal-pakketti jvarjaw skont id-distribuzzjoni bażi:
docker exec <container> sh -c "apt policy php8.3-fpm 2>/dev/null || apk info -v 2>/dev/null | grep php"
Fil-każ ta' pakketti tad-distribuzzjoni jista' jkun hemm backport installat minkejja li n-numru tal-verżjoni jibqa' qadim. Allura jgħodd il-changelog tal-pakkett. L-images uffiċjali ta' PHP, bil-kontra, ġeneralment iġibu PHP ikkumpilat huma stess; hemmhekk in-numru tal-verżjoni minn php -v huwa l-valur deċiżiv. Kif tagħrfu backports tiddeskrivih Kif tivverifikaw sewwa l-verżjoni ta' PHP u l-istat tal-patches.
Aġġornament tal-image Docker ta' PHP: nibnu mill-ġdid u nqassmu
Image proprja bbażata fuq image ta' PHP: Niżżlu l-image bażi mill-ġdid u ibnu mingħajr cache.
docker build --pull --no-cache -t meine-app:2026-10-25 .
docker run --rm meine-app:2026-10-25 php -v # iċċekkja l-verżjoni qabel it-tqassim
B'Docker Compose: Niżżlu jew ibnu l-images u oħolqu l-kontenituri mill-ġdid.
docker compose pull
docker compose build --pull --no-cache
docker compose up -d --force-recreate
Wara iċċekkjaw mill-ġdid b'docker exec <container> php -v jekk il-verżjoni l-ġdida taħdimx. Jekk il-kontenitur għandu tag fiss tal-verżjoni fid-Dockerfile, pereżempju FROM php:8.3.35-fpm, trid togħla t-tag. Tag fuq il-fergħa bħal php:8.3-fpm jirċievi stati ġodda tal-patches, imma biss jekk tniżżel mill-ġdid.
Żommu l-image preċedenti lesta sakemm il-verżjoni l-ġdida tiġi ttestjata. F'każ ta' żball tistgħu tmorru lura mingħajr ma l-applikazzjoni tibqa' offline għal żmien twil. L-image l-qadima, madankollu, fiha mill-ġdid il-PHP vulnerabbli; triq lura hija għalhekk difendibbli biss għal żmien qasir u bil-miżuri temporanji.
Min juża Kubernetes iqassam l-image l-ġdida permezz tad-deployment. Dettalji f'Patching ta' PHP f'Kubernetes. Għall-images ta' FrankenPHP japplika l-istess proċess; indikazzjonijiet dwar il-modalità tat-tħaddim insibu f'Kif tissiguraw FrankenPHP.
Tinsewx kontenituri sekondarji: workers tal-cron u tal-queue, għodod tal-amministrazzjoni jew ambjenti ta' staging spiss jużaw l-istess image ta' PHP, imma jaħdmu f'kontenituri proprji. Kull wieħed minnhom irid jinħoloq mill-ġdid.
Miżuri temporanji fil-kontenitur
Jekk l-aġġornament għad ma jistax isir, il-miżuri temporanji ta' php.net japplikaw ukoll fil-kontenitur. Mhumiex protezzjoni sħiħa. Il-limitu tal-memorja jappartjeni hawnhekk fil-kontenitur, għax php.net jirrakkomandah permezz ta' kontenitur jew cgroup, mhux permezz ta' RLIMIT_AS jew RLIMIT_DATA:
; pereż. bħala fajl fl-image: /usr/local/etc/php/conf.d/zz-uebergang.ini
memory_limit = -1
post_max_size = 8M
upload_max_filesize = 6M
session.upload_progress.enabled = 0
docker run --memory=1g ... # jew f'Compose: deploy.resources.limits.memory
Il-valur taġġustawh għall-applikazzjoni tagħkom. Oqogħdu attenti li l-applikazzjoni ma tistax tissovrascrivi memory_limit waħedha; b'PHP-FPM għal dan insettjaw il-valuri fil-pool b'php_admin_value. Konfigurazzjoni ġdida taħdem biss meta l-kontenitur jinħoloq mill-ġdid jew jerġa' jinbeda; l-isfond dwar ir-restart insibu f'Restart ta' PHP-FPM u tal-workers kollha.
Biex il-ħaġa li jmiss tmur aktar malajr
- Erġgħu ibnu l-images regolarment u awtomatikament, mhux biss meta jinbidel il-kodiċi.
- Użaw images bażi b'tag tal-fergħa u rreġistraw l-istat mibni b'data jew digest.
- Ħallu l-images jiġu vverifikati għal vulnerabbiltajiet magħrufa qabel it-tqassim u ħaddmu l-kontenituri mingħajr drittijiet root.
- Żommu inventarju ta' liema kontenituri jużaw liema image.
Kif tgħin PHP SOS b'mod konkret?
- Niġbru l-istat: Niċċekkjaw il-kontenituri kollha li jaħdmu, l-images u l-verżjonijiet ta' PHP tagħhom, anke kontenituri sekondarji u staging.
- Nibnu mill-ġdid u nqassmu: Permezz tas-servizz ta' patch ta' PHP nibnu l-images bil-verżjoni rranġata u noħolqu mill-ġdid il-kontenituri b'mod ikkontrollat.
- Niżguraw it-tranżizzjoni, fejn l-aġġornament jiddependi mill-applikazzjoni: valuri ta' php.net, limitu tal-memorja fuq il-kontenitur.
- Nissorveljaw b'mod permanenti: Bis-sorveljanza tas-sigurtà inżommu taħt għajnejna l-istati tal-images u l-imġiba mhux tas-soltu tal-kontenituri.
Mistoqsijiet frekwenti
Huwa biżżejjed docker restart wara l-aġġornament?
Le. docker restart jibda l-kontenitur mill-ġdid bl-istess image qadima. Trid tibni jew tniżżel l-image l-ġdida u terġa' toħloq il-kontenitur minnha, pereżempju b'docker compose up -d --force-recreate.
L-image uffiċjali ta' PHP diġà fiha l-verżjoni rranġata?
Dan l-aħjar tivverifikawh direttament: niżżlu l-image mill-ġdid u ħallu php -v jaħdem fiha. Huma mistennija 8.5.12, 8.4.27, 8.3.36 jew 8.2.35. Jekk l-image turi numru aktar antik, għadha mhix aġġornata jew ġejja minn cache.
PHP fil-kontenitur huwa inqas f'riskju milli fuq l-host?
Il-vulnerabbiltà nnifisha taħdem fil-kontenitur bl-istess mod. Kontenitur mibni tajjeb jista' jillimita l-konsegwenzi ta' dħul, pereżempju b'utent mingħajr drittijiet root u sistema tal-fajls protetta mill-kitba. Ma jieħux post il-patch.