Fil-qosor: Code review tas-sigurtà għal PHP huwa l-qari mmirat tal-kodiċi sors b'mistoqsija waħda: Fejn jistgħu inputs barranin jagħmlu xi ħaġa li m'għandhomx permess jagħmlu? Żewġ forom wrew li jaħdmu, review ta' kull bidla u review bażiku tal-proġett kollu, sostnuti minn analiżi statika b'PHPStan jew Psalm. Vulnerabbiltajiet fl-interpretatur ta' PHP bħal PHP2Shell review ma jsibhomx, imma jsib l-ħafna żbalji li jinħolqu fil-kodiċi proprju.
Għaliex issa nħarsu lejn il-kodiċi proprju?
PHP2Shell fl-aħħar ġimgħa ta' Ottubru 2026 okkupa l-aktar l-admins. Patchjar, restart, prova: ix-xogħol kien fuq is-server. Għat-timijiet tal-iżvilupp tibqa' wara mistoqsija skomda. Jekk attakkant jista' jesegwixxi kodiċi permezz ta' vulnerabbiltà oħra, x'jsib fl-applikazzjoni tagħna? U kemm minn dawn il-vulnerabbiltajiet kiteb hu stess?
L-OWASP Top 10 juru għal snin li l-biċċa l-kbira tad-dgħufijiet f'applikazzjonijiet tal-web mhumiex eżotiċi. Kontroll tal-aċċess nieqes, injection u konfigurazzjoni mhux sigura huma fuq nett. Dawn huma żbalji li ħarsa mħarrġa tara fil-kodiċi sors, ħafna qabel ma attakkant jipprovahom.
Ta' dan jiżdied raġuni prattika. Ħafna kumpaniji bħalissa xorta waħda qed jivverifikaw, jippatchjaw u jsaħħu s-servers tagħhom. Min iħares lejn l-applikazzjoni proprja fl-istess ħin, jagħlaq il-lakuna bejn l-operat u l-iżvilupp. Server imsaħħaħ b'applikazzjoni vulnerabbli jibqa' attakkabbli, u applikazzjoni miktuba sewwa fuq PHP mhux ippatchjat l-istess.
Review bażiku jew review tal-bidliet?
Il-OWASP Cheat Sheet dwar is-Secure Code Review jiddistingwi żewġ tipi li fil-prattika jikkumplimentaw lil xulxin:
| Tip | Meta | Ambitu | Għan |
|---|---|---|---|
| Review bażiku (Baseline) | proġett ġdid, release kbir, wara inċident | proġett kollu, imwieżen skont ir-riskju | tirreġistra l-istokk ta' vulnerabbiltajiet |
| Review tal-bidliet (Diff) | kull pull request | biss kodiċi mibdul | tevita żbalji ġodda |
Review bażiku wara inċident huwa partikolarment prezzjuż. Min għadu kemm naddaf server għandu jaf jekk l-applikazzjoni toffrix swali oħra ta' dħul. Ir-review tal-bidliet iżomm l-istat nadif wara, għax kull bidla qabel tingħaqad jinqara wkoll mil-lat tas-sigurtà.
Code review f'PHP: fejn jinġabru l-iżbalji tas-sigurtà
Fi proġetti PHP jixraq li titfgħu ħarsa mmirata lejn ċerti funzjonijiet u mudelli. Mhumiex projbiti, imma kull post misjub jistħoqqlu l-mistoqsija jekk data barranija tistax tidħol fih.
| Mudell fil-kodiċi | Riskju possibbli | Tkomplija |
|---|---|---|
| SQL b'konkatenazzjoni ta' strings b'varjabbli | SQL injection | Evita SQL Injection f'PHP |
unserialize() fuq data minn barra |
Injection ta' oġġetti | Deserjalizzazzjoni mhux sigura f'PHP |
include jew require b'mogħdija varjabbli |
Inklużjoni ta' fajls barranin | Evita Local u Remote File Inclusion |
exec(), system(), shell_exec(), proc_open() |
Eżekuzzjoni ta' kmandi | Command Injection |
Output mingħajr htmlspecialchars() |
Cross-Site Scripting | escaping skont il-kuntest |
== b'tokens jew hashes |
Konverżjoni tat-tip tevita verifiki | hash_equals(), tqabbil strett |
eval(), extract() fuq inputs |
Injection ta' kodiċi jew ta' varjabbli | ġeneralment neħħihom mingħajr sostitut |
Ħarsa ġenerali inizjali mgħaġġla tirnexxi b'tfittxija sempliċi. Ma tissostitwix review, imma turi fejn għandu jinbeda:
# Postijiet ta' funzjonijiet riskjużi fil-kodiċi proprju (vendor eskluż)
grep -rnE "\b(unserialize|eval|extract|shell_exec|exec|system|passthru|proc_open)\s*\(" src/ app/ 2>/dev/null
Mill-inqas daqstant importanti hu dak li jonqos fil-kodiċi. Kull controller jivverifika jekk l-utent imdaħħal jistax jara jew ibiddel eżattament dan ir-rekord? L-uploads huma llimitati għat-tip u l-post tal-ħażna? Vulnerabbiltajiet bħal dawn ebda tfittxija għal ismijiet ta' funzjonijiet ma ssibhom, biss il-qari tal-fluss.
Għodod li jġorru r-review
L-analiżi statika tivverifika l-kodiċi mingħajr ma teżegwih. PHPStan u Psalm isibu żbalji tat-tip, kodiċi mhux milħuq u suppożizzjonijiet ħżiena dwar valuri mrritornati. Psalm joffri barra minn hekk analiżi taint, li ssegwi jekk data minn talbiet tgħaddix mhux ivverifikata lejn postijiet kritiċi. It-tnejn jistgħu jiġu mqabbża pass pass, b'mod li anke proġetti aktar qodma jistgħu jibdew. Ħarsa ġenerali tagħti Analiżi statika: PHPStan u Psalm.
# Analiżi statika fil-proġett, għolli l-livell pass pass
vendor/bin/phpstan analyse src --level=5
# Analiżi taint b'Psalm
vendor/bin/psalm --taint-analysis
L-għodod jagħtu indikazzjonijiet, mhux sentenzi. Kull hit jeħtieġ valutazzjoni, u rapport vojt ma jfissirx li l-applikazzjoni hija sigura.
Daqstant importanti daqs is-sejba hu li tinżamm. Kull sejba għandha tiġi rreġistrata b'post, deskrizzjoni qasira, stima tar-riskju, tiswija rakkomandata u status, l-aħjar direttament fis-sistema tat-tickets tat-tim. Hekk jista' jiġi segwit x'ġie rranġat, x'ġie aċċettat konxjament u x'għadu miftuħ. Wara t-tiswija jixraq it-tieni ħarsa: Il-kawża ġiet eliminata jew is-sintomu wieħed biss? L-istess mudell jidher f'postijiet oħra fil-kodiċi? Żball li sar darba, skont l-esperjenza, rarament jinsab f'post wieħed biss.
Checklist għat-tim proprju
Għal reviews tal-bidliet lista qasira u fissa wriet li taħdem. Tappartjeni fil-mudell tal-pull requests:
- Minn fejn jiġu d-data kollha li din il-bidla tipproċessa, u jiġu vverifikati fuq in-naħa tas-server?
- Il-mistoqsijiet tad-database jinbnew esklussivament b'placeholders?
- Kull output huwa escaped għall-kuntest tiegħu, jiġifieri HTML, attribut, JavaScript jew URL?
- Il-kodiċi jivverifika d-dritt għal eżattament dan l-oġġett, mhux biss il-login?
- Passwords, tokens jew data personali jaslu f'logs jew f'messaġġi ta' żball?
- Hemm sigrieti fil-kodiċi jew f'fajls versjonati?
- Ġew miżjuda dipendenzi ġodda, u huma miżmuma?
Ħallu partijiet kritiċi għas-sigurtà bħal login, ġestjoni tad-drittijiet, proċessi tal-ħlas u uploads dejjem jinqraw minn persuna oħra li ma kinitx involuta fil-kodiċi. Il-ħarsa barranija ssib suppożizzjonijiet li l-awtur iqis ovvji.
Kif tgħin PHP SOS b'mod konkret?
- Flimkien ma' sħab speċjalizzati nagħmlu review bażiku tal-applikazzjoni PHP tagħkom, imwieżen skont il-partijiet bl-ogħla riskju.
- Nistabbilixxu PHPStan jew Psalm adattat għall-istat tal-proġett tagħkom u niktbu l-checklist għall-pull requests tagħkom.
- Nikkombinaw ir-review ma' ħarsa lejn is-server u l-konfigurazzjoni, għax ħafna vulnerabbiltajiet jinħolqu biss fl-interazzjoni.
- Fejn tintalab verifika mill-barra, nissupplimentaw ir-review b'awditu tas-sigurtà u test ta' penetrazzjoni.
Konklużjoni: Code review huwa l-post l-irħas biex jiġu rranġati żbalji tas-sigurtà, jiġifieri qabel ma jitqassmu. Min janalizza kull bidla b'lista qasira u jeżamina l-proġett kompletament kultant, inaqqas il-wiċċ ta' attakk b'mod permanenti.
Mistoqsijiet frekwenti
X'inhi d-differenza bejn code review u test ta' penetrazzjoni?
Code review jaqra l-kodiċi sors u jsib żbalji qabel ma jitqassmu. Test ta' penetrazzjoni jattakka mill-barra l-applikazzjoni li taħdem. It-tnejn jikkumplimentaw lil xulxin: ir-review isib il-kawżi, it-test juri x'jista' tassew jiġi sfruttat.
Code review isib vulnerabbiltajiet bħal PHP2Shell?
Le. PHP2Shell jinsab fl-interpretatur ta' PHP, mhux fil-kodiċi tal-applikazzjoni. Kontra dan jgħin biss aġġornament ta' PHP b'restart. Review isib żbalji fil-kodiċi proprju, pereżempju injection, verifiki nieqsa tad-drittijiet jew deserjalizzazzjoni mhux sigura.
PHPStan jew Psalm huma biżżejjed għal review tas-sigurtà?
Huma bażi tajba u jsibu ħafna żbalji awtomatikament. Żbalji tal-loġika, verifiki nieqsa tad-drittijiet u suppożizzjonijiet ħżiena dwar il-proċessi jagħrafhom biss bniedem li jaf x'suppost tagħmel l-applikazzjoni.
Kemm idum code review tas-sigurtà?
Jiddependi mill-ambitu. Review ta' kull bidla fil-pull request jieħu ftit ħin. Review komplut ta' proġett li kiber huwa proġett għalih, li jiġi llimitat skont ir-riskju għall-partijiet ewlenin.