Fil-qosor: Folder .git pubbliku jinħoloq meta websajt titqassam b'git clone jew git pull direttament fil-webroot u s-server tal-web ma jibblokkax folders moħbija. Imbagħad il-kodiċi sors kollu mal-istorja tal-verżjonijiet jista' jinġieb, inklużi dettalji tal-aċċess ikkummittjati kmieni. Ivverifikaw id-domains tagħkom b'sejħa sempliċi, ibblukkaw l-aċċess minnufih, biddlu d-deployment għal pakketti mingħajr .git u biddlu d-dettalji tal-aċċess mill-istorja.
Il-kodiċi sors biex jittieħed
Git huwa l-għodda standard tal-ġestjoni tal-verżjonijiet, u għal timijiet żgħar huwa ovvju li jintuża wkoll biex jitqassam: tgħaqqad mas-server, git pull, lest. Dan jaħdem b'mod affidabbli u huwa mgħaġġel. Imma għandu effett sekondarju li spiss ħadd ma jinduna bih.
Fil-folder tal-proġett hemm folder moħbi .git. Fih mhux biss l-istat attwali, imma kull fajl f'kull verżjoni li qatt ġiet ikkummittjata, flimkien ma' messaġġi tal-commits, ismijiet u indirizzi tal-posta tal-iżviluppaturi u referenzi għal servers. Jekk dan il-folder jinsab fil-webroot u s-server tal-web jagħtih, kulħadd jista' jġibu.
Għall-attakkanti dan huwa rigal. Bil-kodiċi sors jistgħu jiġu mfittxija vulnerabbiltajiet b'mod mirat, minflok ma jiġu ddeduċuti mill-barra. U fl-istorja spiss insibu affarijiet li kienu jidhru mħassra mdawwar: password tad-database mill-bidu, ċavetta tal-API, fajl tat-test b'data tal-klijenti.
Il-folder .git tagħkom huwa pubbliku? Hekk tivverifikawh
Il-verifika tieħu sekondi u ma tibdel xejn. Għal kull domain u subdomain itolbu fajl li jeżisti f'kull repository ta' Git:
# Mistenni: 403 jew 404
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/.git/HEAD
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/.git/config
# Fuq is-server: Hemm folders .git taħt il-webroots?
find /var/www /srv/www -maxdepth 4 -type d -name ".git" 2>/dev/null
Status 200 ifisser: il-folder huwa aċċessibbli. Oqogħdu attenti wkoll għal sottodirettorji. Xi drabi r-repository ma jinsabx fil-webroot innifsu, imma f'folder ta' plugin jew theme li jinżamm separatament b'Git.
Ivverifikaw ukoll ambjenti ta' staging u tat-test. Jiġu aġġornati b'Git aktar spiss mill-produzzjoni u spiss ikunu aċċessibbli taħt subdomains li jistgħu jiġu ddeduċuti.
Minnufih: ibblokka l-aċċess
Sakemm id-deployment jinbidel, regola fis-server tal-web tibblokka l-aċċess għal folders tal-ġestjoni tal-verżjonijiet. Blokk ġenerali għal fajls moħbija, kif deskritt f'Ipproteġi sewwa d-dettalji tal-aċċess u l-fajls .env, ikopri dan ukoll. Min irid jibblokka b'mod mirat biss il-ġestjoni tal-verżjonijiet juża regola aktar dejqa:
location ~ /\.(git|svn|hg)(/|$) {
return 404;
}
RedirectMatch 404 /\.(git|svn|hg)(/|$)
Wara erġgħu ippruvaw il-verifika ta' hawn fuq, u mhux b'test tal-konfigurazzjoni, imma b'sejħa vera mill-barra: test ta' konfigurazzjoni b'suċċess jgħid biss li s-sintassi hija korretta, mhux li r-regola taħdem qabel regoli oħra għal fajls statiċi. B'panels bħal Plesk jew cPanel daħħlu r-regola fid-direttivi addizzjonali previsti għal dan, biex ma tintilifx mal-ħolqien li jmiss tal-konfigurazzjoni.
Jekk il-folder kien aċċessibbli, ittrattaw id-dettalji tal-aċċess kollha li qatt kienu fir-repository bħala magħrufa. Il-blokk waħdu mbagħad mhuwiex biżżejjed, il-valuri jridu jinbidlu.
Permanenti: qassam mingħajr .git fil-webroot
Il-blokk huwa sigurtà addizzjonali, mhux soluzzjoni. B'mod permanenti l-ġestjoni tal-verżjonijiet ma tappartjenix fuq is-server tal-produzzjoni. Modi mgħarrba, skont l-ambjent tagħkom:
| Proċedura | Kif taħdem | Adattata għal |
|---|---|---|
| Pakkett tal-build mis-CI | Il-pipeline tibni arkivju mingħajr .git, is-server jiftħu f'direttorju ġdid tar-release |
Timijiet b'CI/CD |
git archive |
joħloq arkivju ta' stat mingħajr data tal-verżjonijiet | proġetti żgħar mingħajr pipeline |
rsync b'esklużjonijiet |
jittrasferixxi biss il-fajls meħtieġa | servers klassiċi |
| Immaġni ta' container | Il-kodiċi jiġi kkupjat fl-immaġni waqt il-build, .git eskluż b'.dockerignore |
Operat b'containers |
Direttorju tar-release għal kull verżjoni b'link simboliku lejn l-istat attwali għandu vantaġġ ieħor: f'każ ta' problemi tistgħu terġgħu lura minnufih. Għal setups ta' containers CI/CD: ibni mill-ġdid awtomatikament immaġini PHP jiddeskrivi kif il-builds isiru riproduċibbli. Hemmhekk għandu jiġi vverifikat ukoll li .git ma jaslux fl-immaġni.
# Eżempju: oħloq pakkett ta' stat mingħajr data tal-verżjonijiet
git archive --format=tar.gz -o release.tar.gz HEAD
Fajls oħra tal-proġett li ma jappartjenux fil-webroot
Il-folder .git huwa l-eżempju l-aktar magħruf, imma mhux l-uniku. Min iqassam direttorji sħaħ tal-proġett iġib fil-webroot fajls oħra li m'għandhom xejn x'jagħmlu hemmhekk:
- Folders ta' ambjenti ta' żvilupp bħal
.ideajew.vscode, fejn estensjonijiet għall-upload ta' fajls xi drabi jaħżnu indirizzi ta' servers u dettalji tal-aċċess. composer.jsonucomposer.lock, li jiżvelaw il-verżjonijiet eżatti tal-libreriji kollha u b'hekk jiffaċilitaw it-tfittxija għal vulnerabbiltajiet magħrufa.- Konfigurazzjonijiet għal testijiet, għodod tal-build u pipelines, li jiżvelaw hostnames interni u proċessi.
- Bqija ta' sistemi operattivi bħal
.DS_Store, li fihom listi ta' fajls ta' direttorji sħaħ.
Is-soluzzjoni hija l-istess bħal mal-folder .git: agħti biss dak li jrid ikun pubbliku, idealment permezz ta' sottofolder proprju bħala webroot. Min xorta waħda jibdel id-deployment għal pakketti, jistabbilixxi miegħu lista ta' fajls esklużi u jivverifikaha ma' kull għodda ġdida fil-proġett.
Jekk il-folder kien miftuħ: ivverifika l-istorja u l-protokolli
Jekk jirriżulta li l-folder .git kien aċċessibbli, mexxu f'din l-ordni:
- Ibblokka l-aċċess u erġa' ipprova l-verifika.
- Fittex fl-istorja liema sigrieti qatt ġew ikkummittjati: fajls ta' konfigurazzjoni,
.env, ċwievet, dumps tad-database. - Biddel id-dettalji tal-aċċess, kollha li nstabu fil-pass 2, anke jekk illum ma jibqgħux fil-kodiċi.
- Evalwa l-protokolli tal-aċċess, jekk fajls taħt
/.git/ġewx mitluba bi status 200 u minn liema indirizzi. Kif issir din turi Evalwa l-logs tas-server tal-web wara attakk. - Ivverifika l-kodiċi sors b'mod mirat, għax l-attakkanti issa jafuh. Dgħufijiet magħrufa għandhom jiġu rranġati bi prijorità.
- Iċċara l-protezzjoni tad-data, jekk data personali kienet fl-istorja, pereżempju esportazzjonijiet tat-test. Il-valutazzjoni tagħmilha l-uffiċjal tal-protezzjoni tad-data tagħkom.
Għodod għat-tfittxija ta' sigrieti f'repositories wara jappartjenu b'mod permanenti fil-pipeline. OWASP jirrakkomanda verifiki bħal dawn espliċitament, bħala hook qabel il-kummit u fis-CI.
Kif tgħin PHP SOS b'mod konkret?
- Nivverifikaw id-domains u s-subdomains kollha tagħkom għal folders aċċessibbli tal-ġestjoni tal-verżjonijiet.
- Nibblukkaw l-aċċess minnufih u nibdlu d-deployment għal pakketti mingħajr data tal-verżjonijiet.
- Infittxu fl-istorja għal sigrieti u nakkumpanjaw l-iskambju tal-aċċessi affettwati.
- Nevalwaw il-protokolli tal-aċċess u niddokumentaw jekk u meta ġiet imġiba data.
Dawn il-miżuri huma parti mill-Hardening tas-server għal servers tal-web PHP tagħna.
Mistoqsijiet frekwenti
Kif jinħoloq folder .git pubbliku?
Ġeneralment permezz ta' deployment b'git clone jew git pull direttament fil-webroot. Il-folder .git bl-istorja kollha tal-verżjonijiet imbagħad jinsab maġenb index.php, u mingħajr blokk is-server tal-web jagħti l-fajls tiegħu.
Huwa biżżejjed li jitħassar il-folder .git?
Għall-futur iva, għall-passat le. Jekk il-folder kien aċċessibbli, il-kontenut jista' diġà jkun ġie kkupjat. Dettalji tal-aċċess li xi darba kienu fir-repository għalhekk għandkom tibdluhom.
Jgħin li jitneħħew a posteriori dettalji tal-aċċess mill-istorja ta' Git?
Jevita li kopji ġodda jinkluduhom. Min diġà ġab ir-repository għad għandu l-istadji qodma. Id-deċiżiv għalhekk huwa l-iskambju tad-dettalji tal-aċċess, mhux biss il-kitba mill-ġdid tal-istorja.
Dan jolqot ukoll sistemi oħra ta' ġestjoni tal-verżjonijiet?
Iva. Anke folders bħal .svn jew .hg fihom data tal-proġett u qatt m'għandhom ikunu aċċessibbli fil-webroot. Blokk ġenerali għal fajls u folders bi punt fil-bidu jkopri dawn il-każijiet kollha.