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:
- Is-sid huwa l-utent tad-deployment, mhux il-proċess ta' PHP.
- Il-grupp huwa l-grupp tal-pool ta' PHP-FPM, li jista' jaqra biss; drittijiet
640. - 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.
- L-ebda valuri veri fir-repository: Biss
.env.exampleb'placeholders jiddaħħal, il-fajl veru jinsab f'.gitignore. - 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.
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.