Fil-qosor: Biex tipprojbixxi l-eżekuzzjoni ta' PHP fl-uploads, l-ewwel iddetermina l-folders kollha fejn PHP jista' jikteb, u wara ibblokka f'kull wieħed minnhom l-eżekuzzjoni ta' skripts fil-konfigurazzjoni tas-server, mhux b'.htaccess. Fi Nginx il-blokk irid jaħdem qabel il-blokk ġenerali ta' PHP, f'Apache jappartjeni fil-VirtualHost b'AllowOverride None. security.limit_extensions = .php fil-pool FPM u test b'fajl bla ħsara itemmu x-xogħol.
Għaliex proprju issa l-folders tal-upload jgħoddu
Wara vulnerabbiltà kritika bħal PHP2Shell l-attakkanti rari jridu jesegwixxu kodiċi darba biss. Iridu jirritornaw, anke meta s-server jiġi ppatchjat aktar tard. L-aktar triq sempliċi għal dan hija webshell: fajl żgħir ta' PHP, mqiegħed f'folder li jista' jinkiteb u mitlub aktar tard mill-browser.
Patch ma jneħħix fajl bħal dan. Min kien online mhux ippatchjat mill-20 ta' Ottubru 2026 għalhekk m'għandux biss jaġġorna, imma wkoll jivverifika jekk xi mkien hemm fajls ġodda ta' PHP, u fil-futur jipprevjeni li jiġu eżegwiti. Kif tinterpreta s-sejbiet tiddeskrivih Fajls PHP fil-folder tal-upload: interpreta sew is-sejbiet.
Il-blokk tal-eżekuzzjoni jaħdem fuq it-tieni kundizzjoni. Ma jipprevjenix li fajl jitpoġġa, imma li s-server jittrattah bħala programm.
L-ewwel l-inventarju: fejn jista' jikteb PHP?
Il-biċċa l-kbira tal-gwidi jsemmu biss il-folder tal-upload. Fil-prattika applikazzjoni ta' PHP tikteb f'ħafna aktar postijiet. Kull wieħed minnhom li huwa aċċessibbli permezz tas-server tal-web jeħtieġ il-blokk.
| Tip ta' folder | Kontenut tipiku | Għaliex jista' jinkiteb |
|---|---|---|
| Uploads, midja | immaġini, PDFs, attachments | utenti u redazzjoni jgħabbu fajls |
| Cache | paġni ġenerati, thumbnails | l-applikazzjoni tħaffef it-twassil |
| Temp, importazzjoni, esportazzjoni | fajls CSV, stadji intermedji | interfaces u skambju ta' data |
| Backups fil-webroot | .zip, .sql |
estensjonijiet jagħmlu backup „fuq il-post” |
| Logs fil-webroot | logs tal-iżbalji u tad-debug | applikazzjonijiet ikkonfigurati ħażin |
Liema folders huma dawn fuq is-server tiegħek turi tiftix bid-drittijiet tal-utent tar-runtime. Ma jibdel xejn:
# Il-folders kollha taħt /var/www fejn l-utent ta' PHP jista' jikteb
# (adatta l-utent: www-data, nginx, apache jew utent proprju tal-pool)
sudo -u www-data find /var/www -type d -writable 2>/dev/null | sort
# F'dawn il-folders diġà hemm fajls PHP?
sudo -u www-data find /var/www -type d -writable -print0 2>/dev/null \
| xargs -0 -I{} find {} -maxdepth 1 -type f -iname "*.ph*" 2>/dev/null
Jekk l-ewwel tiftix jirritorna l-webroot kollu, il-kodiċi tal-programm jappartjeni lill-utent tar-runtime. Dan għandek tibdlu qabel, kif tiddeskrivi l-gwida Drittijiet tal-fajls fuq is-server tal-web. Inkella ma jkun hemm l-ebda folder li ma jkollux bżonn jiġi mblukkat.
Ipprojbixxi l-eżekuzzjoni ta' PHP fl-uploads: Nginx
F'Nginx l-ordni tiddeċiedi. Skont id-dokumentazzjoni ta' Nginx, espressjonijiet regolari jiġu vverifikati fl-ordni tal-fajl tal-konfigurazzjoni, u l-ewwel taqbila tirbaħ. Jekk il-blokk ġenerali location ~ \.php$ jinsab qabel il-blokk tiegħek, il-fajl jiġi eżegwit. Prefix-location sempliċi mingħajr ^~ ma tipproteġix għall-istess raġuni.
Sigur huwa espressjoni regolari għall-folders mblukkati kollha li tinsab qabel il-blokk ta' PHP. Tkopri wkoll estensjonijiet użati rarament:
server {
# ... konfigurazzjoni bażika ...
# 1. Blokk għal folders li jinkitbu, JRID jinsab qabel il-blokk ta' PHP
location ~* ^/(uploads|media|cache|tmp|export)/.*\.(php\d?|phtml|phar|pht|phps)$ {
deny all;
}
# 2. Blokk ġenerali ta' PHP: għaddi biss fajls li jeżistu
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/seite1.sock;
}
}
Adatta l-ismijiet tal-folders għall-inventarju tiegħek. F'applikazzjonijiet b'punt tad-dħul wieħed it-triq permezz ta' lista ta' permess hija saħansitra aktar b'saħħitha; il-mudell juri Ikkonfigura Nginx għal PHP b'mod sigur.
Apache u PHP-FPM: il-blokk fil-post it-tajjeb
F'Apache l-blokk jappartjeni fil-konfigurazzjoni tas-server jew fil-VirtualHost. .htaccess fil-folder tal-upload mhijiex adattata, għax kull min jista' jikteb hemmhekk jista' jibdilha. Għall-webroot kollu għalhekk japplika AllowOverride None. Skont id-dokumentazzjoni ta' Apache, AllowOverride huwa permess biss f'blokki <Directory> mingħajr espressjonijiet regolari, allura tissettjah fil-webroot u l-blokk b'<DirectoryMatch> taħtu:
<Directory /var/www/seite1/public>
AllowOverride None
Require all granted
</Directory>
<DirectoryMatch "^/var/www/seite1/public/(uploads|media|cache|tmp|export)/">
<FilesMatch "\.(php\d?|phtml|phar|pht|phps)$">
Require all denied
</FilesMatch>
</DirectoryMatch>
Jekk għadu jaħdem mod_php, żid fl-istess blokk php_admin_flag engine off. Ma' PHP-FPM taħdem barriera oħra fil-pool: security.limit_extensions jiddetermina liema estensjonijiet FPM jesegwixxi għalkollox. Skont il-manwal ta' PHP l-istandard huwa .php .phar; hija rakkomandata r-restrizzjoni għal .php.
; fil-pool, pereżempju /etc/php/8.3/fpm/pool.d/seite1.conf
security.limit_extensions = .php
Ittestja b'fajl bla ħsara
Jekk il-blokk jaħdimx juri biss test. Poġġi għal ftit f'kull folder imblukkat fajl li sempliċement juri test, iftaħu mid-dominju u wara ħassru.
- Ivverifika l-konfigurazzjoni:
nginx -tjewapachectl configtest, imbagħad erġa' tgħabbi. - Oħloq fajl ta' test, pereżempju
uploads/sperrtest.phpbil-kontenut<?php echo 'ausgefuehrt';. - Iftaħ b'
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/uploads/sperrtest.php. Jiġi mistenni403. - Jekk minflok jidher
200u t-test „ausgefuehrt”, il-blokk ma jaħdimx. Ivverifika l-konfigurazzjoni u l-ordni. - Ħassar il-fajl ta' test u erġa' agħmel it-test għal kull folder u kull websajt.
Jekk fl-inventarju diġà ssib fajls PHP mhux magħrufa f'folders li jinkitbu, tħassar xejn bla ħsieb. L-ewwel salva l-istat u l-logs, għax dawn il-fajls huma provi. Kif tipproċedi wara tiddeskrivih Agħraf u neħħi webshells.
Kif il-funzjonijiet tal-upload jinbnew b'mod sigur fil-kodiċi, bil-verifika tat-tip u l-ħażna barra mill-webroot, jinsab fil-gwida Implimenta uploads ta' fajls f'PHP b'mod sigur.
Konklużjoni: tikteb iva, tesegwixxi le
Il-blokk tal-eżekuzzjoni f'folders li jinkitbu huwa waħda mill-aktar miżuri effettivi kontra backdoors permanenti. Jiswa ftit linji ta' konfigurazzjoni u ma jkisser xejn f'applikazzjonijiet mibnija sewwa. Id-deċiżivi huma tliet affarijiet: inventarju sħiħ minflok biss il-folder ovvju tal-upload, l-ordni t-tajba fi Nginx jew il-livell t-tajjeb f'Apache u test veru b'fajl bla ħsara.
Ikkomplementat minn sidien separati għall-kodiċi tal-programm, security.limit_extensions fil-pool u tiftix regolari għal fajls ġodda ta' PHP jinħoloq stat fejn fajl imqiegħed jibqa' bla dubju skomdu, imma kważi ma jistax jintuża aktar. Dan la jissostitwixxi l-aġġornament u lanqas it-tiftix tat-traċċi, imma jneħħi mill-attakkanti waħda mill-aktar għodod importanti tagħhom.
Kif tgħin PHP SOS b'mod konkret?
- Inventarju: niddeterminaw il-folders kollha li jinkitbu għal kull websajt u nivverifikawhom għal fajls PHP eżistenti.
- Nissettjaw il-blokki: nidħlu l-blokki tal-eżekuzzjoni fi Nginx, Apache u PHP-FPM, fl-ordni t-tajba u mingħajr dipendenza fuq
.htaccess. - Nittestjaw: kull blokk nivverifikawh b'fajl bla ħsara u niddokumentaw ir-riżultat.
- Innaddfu: f'każ ta' sejbiet nieħdu f'idejna s-salvataġġ tat-traċċi u t-Tneħħija tal-malware.
Mistoqsijiet frekwenti
Huwa biżżejjed .htaccess fil-folder tal-upload biex tiġi pprojbita PHP?
Mhux b'mod affidabbli. Min jista' jikteb fil-folder jista' jibdel jew jissostitwixxi wkoll l-.htaccess. Il-blokk jappartjeni fil-konfigurazzjoni tas-server jew fil-VirtualHost, u għall-webroot għandu japplika AllowOverride None.
Liema folders għandi nibblokka?
Il-folders kollha li fihom l-utent ta' PHP jista' jikteb u li huma aċċessibbli permezz tas-server tal-web. Minbarra l-folders tal-upload, spiss dawn huma direttorji ta' cache, temp, importazzjoni, esportazzjoni u backup. Iddeterminahom b'tiftix bħala l-utent tar-runtime.
Il-blokk iħassar il-websajt tiegħi?
Bħala regola le, għax f'folders tal-upload u tal-cache ta' applikazzjonijiet nodfa ma jinsabu l-ebda skripts li jissejħu direttament. Xi estensjonijiet, madankollu, jaħżnu hemmhekk fajls PHP. Ittestja għalhekk wara l-bidla l-funzjonijiet l-aktar importanti.
Il-blokk jipproteġi minn PHP2Shell?
Le. PHP2Shell huwa vulnerabbiltà fl-interpretatur ta' PHP li tingħalaq biss bl-aġġornament u r-restart tal-workers kollha. Il-blokk, madankollu, jipprevjeni li fajl imqiegħed aktar tard jiġi mitlub mill-browser u użat bħala backdoor permanenti.