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 →

Ipproteġi sewwa d-dettalji tal-aċċess u l-fajls .env

Kif tipproteġu passwords tad-database, ċwievet tal-API u sigrieti oħra fi proġetti PHP: fajls .env barra mill-webroot, blokki fis-server tal-web, drittijiet dojoq u skambju ordnat wara inċident.

Stat 6 min. qariŻvilupp sigur

Fil-qosor: Fajl .env tipproteġuh billi ma jkunx fid-direttorju aċċessibbli pubblikament fl-ewwel lok: il-webroot juri lejn sottofolder bħal public/, il-konfigurazzjoni tkun livell fuqu. Barra minn hekk is-server tal-web jibblokka l-fajls kollha bi punt fil-bidu, il-fajl jinqara biss mis-sid u mill-proċess ta' PHP u qatt ma jappartjeni fir-repository ta' Git. Wara dħul, id-dettalji tal-aċċess kollha fih jitqiesu magħrufa u jinbidlu.

Il-fajl bliċ-ċwievet tad-dar

Proġetti PHP moderni jħobbu jpoġġu s-sigrieti tagħhom f'fajl bl-isem .env: password tad-database, aċċess għas-server tal-posta, ċwievet tal-API għal servizzi tal-ħlas u tal-konsenja, iċ-ċavetta li biha l-applikazzjoni tiffirma cookies. Frameworks bħal Laravel u Symfony jużaw dan il-mudell, ħafna żviluppi proprji adottawh.

Din hija idea tajba: il-konfigurazzjoni u l-kodiċi huma separati, u kull ambjent jirċievi valuri proprji. Isir perikoluż meta l-fajl jispiċċa fid-direttorju ħażin. Jekk jinsab fil-webroot u s-server tal-web ma jibblokkahx, sejħa waħda fil-browser hija biżżejjed biex jinqraw l-aċċessi kollha f'daqqa.

Ta' dan jiżdiedu varjanti b'ismijiet oħra: .env.local, .env.production, config.local.php jew fajls b'dettalji tal-aċċess għal servizzi ta' ħażna. Dak li hawnhekk huwa deskritt għal .env japplika għall-fajls kollha li fihom sigrieti.

Fajls bħal dawn jiġu mfittxija kontinwament minn scanners awtomatizzati. Din mhix speċjalità ta' attakkanti individwali, imma storbju tal-isfond fl-internet, simili għall-iscans bil-massa għal verżjonijiet ta' PHP mhux ippatchjati.

Fejn għandu jkun il-fajl .env

L-aktar miżura effettiva hija strutturali: is-server tal-web għandu jagħti biss il-folder li fil-fatt għandu jkun pubbliku. Fi Laravel u Symfony dan huwa l-folder public/. Kull ħaġa oħra, jiġifieri kodiċi, konfigurazzjoni, logs u .env, tinsab fuqu u ma tistax tiġi indirizzata permezz ta' HTTP xejn.

/srv/www/shop/
├── .env              ← mhux aċċessibbli
├── config/
├── src/
├── vendor/
└── public/           ← l-uniku webroot
    ├── index.php
    └── assets/

Fil-prattika l-webroot madankollu spiss juri lejn id-direttorju tal-proġett innifsu, pereżempju għax panel tal-hosting jiddikjara hekk jew għax waqt trasferiment mogħdija ma ġietx adattata. Ivverifikaw għalhekk fil-konfigurazzjoni tas-server tal-web jew fil-panel lejn fejn juri root rispettivament DocumentRoot.

Ipproteġi l-fajl .env: blokk fis-server tal-web bħala t-tieni linja

Jekk il-webroot ma jistax jinbidel, jew jekk tridu sigurtà addizzjonali, ibblukkaw il-fajls moħbija fis-server tal-web. Il-folder .well-known irid jibqa' aċċessibbli, għax jintuża fost oħrajn għall-ħruġ ta' ċertifikati.

# Ibblokka l-fajls u l-folders kollha bi punt fil-bidu, ħlief .well-known
location ~ /\.(?!well-known/) {
    deny all;
    return 404;
}
# Ibblokka fajls bi punt fil-bidu
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

Tweġiba b'404 minflok 403 ma tiżvelax li l-fajl jeżisti. Jekk il-blokk jaħdimx tivverifikawh mill-barra:

# Mistenni: 403 jew 404, qatt 200
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/.env
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/.env.example
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/.env.bak

L-aħħar żewġ linji mhumiex kumbinazzjoni: kopji bħal .env.bak jew .env.old jinħolqu waqt xogħlijiet ta' manutenzjoni u spiss jintnesew. Aktar dwar bqijiet bħal dawn insibu f'Fajls tal-backup fil-webroot.

Drittijiet, Git u t-trattament tal-kopji

Anke barra mill-webroot japplika l-prinċipju tad-drittijiet minimi. Qasma mgħarrba:

  1. Is-sid huwa l-utent tad-deployment, mhux il-proċess ta' PHP.
  2. Il-grupp huwa l-grupp tal-pool ta' PHP-FPM, li jista' jaqra biss; drittijiet 640.
  3. L-ebda aċċess ta' kitba għall-proċess ta' PHP. Applikazzjoni m'għandhiex bżonn tibdel id-dettalji tal-aċċess proprji.
  4. L-ebda valuri veri fir-repository: Biss .env.example b'placeholders jiddaħħal, il-fajl veru jinsab f'.gitignore.
  5. Valuri separati għal kull ambjent: Żvilupp, staging u produzzjoni jużaw aċċessi differenti, biex tnixxija f'ambjent tat-test ma tiftaħx il-produzzjoni.
chown deploy:shop-php /srv/www/shop/.env
chmod 640 /srv/www/shop/.env
# Ivverifika jekk il-fajl qatt ġiex ikkummittjat
git log --all --oneline -- .env

Oqogħdu attenti wkoll għal paġni ta' żbalji. Frameworks fil-modalità tad-debug xi kultant juru variabbli tal-ambjent u valuri tal-konfigurazzjoni; fuq sistema tal-produzzjoni din il-modalità trid tkun mitfija. Ivverifikaw dan wara kull deployment, għax valur ħażin fl-.env innifsu jista' jerġa' jixgħelha.

Jekk l-aħħar kmand jagħti hits, id-dettalji tal-aċċess jinsabu fl-istorja ta' Git u jitqiesu esposti, anke jekk il-fajl illum ma jeżistix. Għaliex dan huwa partikolarment delikat meta l-folder .git jinsab fuq is-server jiddeskrivi Folder .git pubbliku: tnixxija ta' data li tiġi sottovalutata. Tagħrif bażiku dwar drittijiet jispjega l-gwida Drittijiet tal-fajls fuq is-server tal-web.

Importanti

Fajls tat-test b'phpinfo() juru variabbli tal-ambjent. Min jgħaddi s-sigrieti bħala variabbli tal-ambjent jiżvelahom permezz ta' fajl tat-test minsi. L-isfond jinsab f'Fajls phpinfo(): għaliex iridu jisparixxu.

Wara dħul: biddlu d-dettalji tal-aċċess

L-ebda blokk ma jipproteġi minn attakkant li diġà jesegwixxi kodiċi fuq is-server. Proċess ta' PHP irid jaqra l-konfigurazzjoni tiegħu, għalhekk kodiċi daħħal bil-moħbi fl-istess proċess jista' jagħmel dan ukoll. Wara PHP2Shell għalhekk japplika: jekk dħul ma jistax jiġi eskluż, id-dettalji tal-aċċess kollha fuq is-server għandhom jiġu ttrattati bħala magħrufa.

Skambju ordnat jinkludi passwords tad-database, aċċessi tal-posta u SMTP, ċwievet tal-API ta' servizzi esterni, ċwievet tal-firma tal-applikazzjoni u aċċessi għal servizzi ta' ħażna. L-ordni u l-mument għandhom jiġu ppjanati: min jibdel l-ewwel u mbagħad inaddaf is-server, jista' jagħti l-valuri l-ġodda lill-attakkant magħhom.

Id-dannu ta' tnixxija tillimitawh minn qabel, billi kull sigriet jista' biss daqs kemm hu meħtieġ. L-utent tad-database tal-websajt ma jeħtieġx drittijiet fuq databases oħra. Ċwievet tal-API ta' servizzi esterni għand ħafna fornituri jistgħu jiġu llimitati għal funzjonijiet individwali jew indirizzi tal-mittent, pereżempju joħolqu konsenji imma ma jibdewx ħlasijiet ħerġin. U kull applikazzjoni tirċievi aċċessi proprji, minflok ma diversi websajts jaqsmu l-istess kont tal-posta jew l-istess ċavetta. Imbagħad tnixxija taffettwa qasam ċar u ddelimitat, u l-iskambju jibqa' maniġġabbli.

F'ambjenti ta' containers il-fajl .env ma jappartjenix la fl-immaġni u lanqas f'registry aċċessibbli pubblikament. Eskludu b'.dockerignore u għaddu s-sigrieti biss waqt it-tħaddim permezz tal-mekkaniżmi tal-pjattaforma.

Fit-tul jixraq li titfgħu ħarsa lejn ħażniet ċentrali tas-secrets, kif jirrakkomanda OWASP: sigrieti f'post wieħed, b'protokoll tal-aċċess, skambju regolari u validità kemm jista' jkun qasira.

Kif tgħin PHP SOS b'mod konkret?

  • Niċċekkjaw mill-barra jekk fajls ta' konfigurazzjoni, kopji u fajls moħbija tal-websajts tagħkom jistgħux jinġiebu.
  • Nibdlu l-webroot, il-blokki tas-server tal-web u d-drittijiet tal-fajls b'mod li s-sigrieti ma jibqgħux aċċessibbli permezz ta' HTTP.
  • Nivverifikaw repositories u deployments għal dettalji tal-aċċess ikkummittjati.
  • Wara inċident nippjanaw u nakkumpanjaw l-iskambju tal-aċċessi kollha affettwati fl-ordni t-tajba.

Dawn ix-xogħlijiet huma parti mill-Hardening tas-server għal servers tal-web PHP tagħna.

Mistoqsijiet frekwenti

Fajl .env fil-webroot huwa awtomatikament pubbliku?

Mhux awtomatikament, imma spiss. Jekk jistax jinġieb jiddependi mill-konfigurazzjoni tas-server tal-web. Ħafna konfigurazzjonijiet awtomatiċi jipproteġu biss fajls .htaccess, mhux fajls oħra bi punt fil-bidu. Test b'curl jagħti ċarezza.

Variabbli tal-ambjent huma aktar siguri minn fajl .env?

Mhux bħala regola. OWASP jindika li l-variabbli tal-ambjent jinqraw mill-proċessi kollha tal-utent u jistgħu jidhru f'logs jew f'dumps tal-memorja. Jevitaw, madankollu, fajl fil-webroot. Aħjar huma ħażniet ċentrali tas-secrets, fejn l-ambjent jappoġġjahom.

X'għandi nagħmel jekk il-fajl .env kien jista' jinġieb?

Qisu d-dettalji tal-aċċess kollha fih magħrufa u biddluhom: database, posta, APIs, servizzi tal-ħlas, ċwievet tal-applikazzjoni. Wara ivverifikaw fil-protokolli tal-aċċess jekk il-fajl ġiex mitlub, u jekk hemm data personali kunsidraw l-uffiċjal tal-protezzjoni tad-data.

Il-fajl .env jappartjeni fir-repository ta' Git?

Le. Fir-repository jappartjeni l-aktar mudell mingħajr valuri veri, pereżempju .env.example. Il-fajl veru jiġi eskluż permezz ta' .gitignore u jingħata separatament fuq is-server.

phpinfo() jista' jiżvela dettalji tal-aċċess?

Iva. phpinfo() juri fost oħrajn variabbli tal-ambjent u tas-server. Jekk is-sigrieti jinsabu hemm, jintwerew magħhom. Fajls tat-test b'phpinfo() għalhekk qatt m'għandhom jinsabu fuq sistema aċċessibbli.

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