An cás reatha: PHP2Shell. Ceadaíonn dhá leochaileacht chriticiúla PHP (CVSS 9.2) cód mailíseach gan logáil isteach. Paistí ar fáil ón 21 Deireadh Fómhair 2026.Cad atá le déanamh anois →

Athbhreithniú cóid slándála do thionscadail PHP

Conas a ghabhann foirne a gcód PHP féin trí lena sheiceáil go sonrach le haghaidh laigí slándála: cineálacha athbhreithnithe, feidhmeanna criticiúla, uirlisí úsáideacha agus liosta seiceála.

Staid Am léitheoireachta: 6 nóim.Forbairt shlán

Go achomair: Is éard is athbhreithniú cóid slándála do PHP ann ná cód foinse a léamh go sonrach le ceist amháin: Cá bhféadfadh ionchuir choimhthíocha rud a dhéanamh nach bhfuil cead acu a dhéanamh? Tá dhá fhoirm tástáilte, athbhreithniú ar gach athrú agus bunathbhreithniú ar an tionscadal iomlán, le tacaíocht ó anailís statach le PHPStan nó Psalm. Ní aimsíonn athbhreithniú laigí san ateangaire PHP ar nós PHP2Shell, ach aimsíonn sé na hearráidí go leor a thagann chun cinn i gcód féin.

Cén fáth breathnú ar do chód féin anois go háirithe?

Bhí PHP2Shell ina ábhar imní do riarthóirí den chuid is mó i seachtain dheireanach Dheireadh Fómhair 2026. Paistiú, atosú, cruthú: bhí an obair ar an bhfreastalaí. D'fhoirne forbartha fanann ceist míchompordach ina dhiaidh sin. Má tá ionsaitheoir in ann cód a rith trí laige eile, cad a aimsíonn sé inár bhfeidhmchlár? Agus cé mhéad de na laigí sin a scríobh muid féin?

Léiríonn OWASP Top 10 le blianta nach bhfuil formhór na laigí i bhfeidhmchláir ghréasáin coimhthíoch. Tá rialú rochtana ar iarraidh, injection agus cumraíocht neamhshlán ard sa liosta. Is earráidí iad a aimsíonn súil chleachta sa chód foinse i bhfad sula dtriaileann ionsaitheoir iad.

Tá cúis phraiticiúil ann freisin. Tá a lán cuideachtaí ag seiceáil, ag paistiú agus ag cruatú a bhfreastalaithe faoi láthair ar aon nós. An té a bhreathnaíonn ar a fheidhmchlár féin sa phróiseas céanna, dúnann sé an bhearna idir oibriú agus forbairt. Fanann freastalaí cruaite le feidhmchlár so-ghortaithe so-ionsaithe, agus is amhlaidh d'fheidhmchlár scríofa go glan ar PHP gan phaiste.

Bunathbhreithniú nó athbhreithniú athruithe?

Idirdhealaíonn Cheat Sheet OWASP maidir le Secure Code Review idir dhá chineál a chuireann le chéile sa chleachtas:

Cineál Cathain Scóip Sprioc
Bunathbhreithniú (Baseline) tionscadal nua, mór-eisiúint, tar éis teagmhais an tionscadal iomlán, meáite de réir riosca stoc na laigí a thaifeadadh
Athbhreithniú athruithe (Diff) gach Pull Request an cód athraithe amháin earráidí nua a chosc

Tá bunathbhreithniú tar éis teagmhais thar a bheith luachmhar. An té atá díreach tar éis freastalaí a ghlanadh, ba cheart go mbeadh a fhios aige an dtairgeann an feidhmchlár bealaí isteach eile. Coinníonn an t-athbhreithniú athruithe an staid glan ina dhiaidh sin, mar léitear gach athrú ó thaobh na slándála freisin sula gcomhcheanglaítear é.

Athbhreithniú cóid i PHP: cá bhfuil earráidí slándála ag cnuasach

I dtionscadail PHP is fiú breathnú go sonrach ar fheidhmeanna agus patrúin áirithe. Níl cosc orthu, ach tuilleann gach tarlú an cheist an bhféadfadh sonraí coimhthíocha dul isteach.

Patrún sa chód Riosca féideartha Tuilleadh eolais
SQL trí theaghráin a nascadh le hathróga SQL injection SQL injection a chosc i PHP
unserialize() ar shonraí ón taobh amuigh Instealladh oibiachtaí Dí-shraitheadú neamhshlán i PHP
include nó require le cosán athraitheach Comhaid choimhthíocha a chuimsiú Local agus Remote File Inclusion a chosc
exec(), system(), shell_exec(), proc_open() Orduithe a rith Command Injection
Aschur gan htmlspecialchars() Cross-Site Scripting éalú atá ceart don chomhthéacs
== le comharthaí nó hashanna Seachbhóthar seiceálacha trí athrú cineáil hash_equals(), comparáidí dochta
eval(), extract() ar ionchuir Instealladh cóid nó athróg a scriosadh gan ionadach den chuid is mó

Tugann cuardach simplí forbhreathnú tapa tosaigh. Ní thagann sé in ionad athbhreithnithe, ach léiríonn sé cá háit le tosú:

# Áiteanna ina bhfuil feidhmeanna contúirteacha i do chód féin (vendor eisiata)
grep -rnE "\b(unserialize|eval|extract|shell_exec|exec|system|passthru|proc_open)\s*\(" src/ app/ 2>/dev/null

Tá sé chomh tábhachtach céanna cad atá ar iarraidh sa chód. An seiceálann gach rialtóir an bhfuil cead ag an úsáideoir logáilte isteach an taifead seo go beacht a fheiceáil nó a athrú? An bhfuil uaslódálacha teoranta de réir cineáil agus áit stórála? Ní aimsíonn cuardach ar ainmneacha feidhmeanna laigí den sórt sin, ach léamh an phróisis amháin.

Uirlisí a thacaíonn leis an athbhreithniú

Seiceálann anailís statach cód gan é a rith. Aimsíonn PHPStan agus Psalm earráidí cineáil, cód nach féidir a shroicheadh agus toimhdí mícheart faoi luachanna ar ais. Tairgeann Psalm anailís taint ina theannta sin, a leanann an sreabhann sonraí ó iarratais chuig áiteanna criticiúla gan seiceáil. Is féidir an dá cheann a dhéanamh níos déine céim ar chéim, ionas gur féidir le tionscadail níos sine tosú freisin. Tugann Anailís statach: PHPStan agus Psalm forbhreathnú.

# Anailís statach sa tionscadal, an leibhéal a ardú céim ar chéim
vendor/bin/phpstan analyse src --level=5
# Anailís taint le Psalm
vendor/bin/psalm --taint-analysis

Tugann uirlisí leideanna, ní breithiúnais. Teastaíonn measúnú ó gach tarlú, agus ní chiallaíonn tuarascáil fholamh go bhfuil an feidhmchlár slán.

Tá sé chomh tábhachtach le fáil an taifead a choinneáil. Ba cheart gach fionnachtain a thaifeadadh le háit, cur síos gairid, measúnú riosca, ceartúchán molta agus stádas, is fearr go díreach i gcóras ticéad na foirne. Mar sin is féidir a rianú cad a ceartaíodh, cad a glacadh leis d'aon ghnó agus cad atá oscailte fós. Tar éis an cheartaithe is fiú dara súil: An bhfuil an chúis imithe nó an comhartha amháin? An dtarlaíonn an patrún céanna in áiteanna eile sa chód? De réir taithí, is annamh a bhíonn earráid a rinneadh uair amháin in aon áit amháin.

Liosta seiceála d'fhoireann

Le haghaidh athbhreithnithe athruithe, d'éirigh go maith le liosta gearr seasta. Bíodh sé sa teimpléad do Pull Requests:

  1. Cárb as a dtagann na sonraí go léir a phróiseálann an t-athrú seo, agus an seiceáiltear iad ar thaobh an fhreastalaí?
  2. An dtógtar fiosruithe bunachair sonraí le sealbhóirí áite amháin?
  3. An bhfuil gach aschur éalaithe dá chomhthéacs, is é sin HTML, tréith, JavaScript nó URL?
  4. An seiceálann an cód an cead don réad seo go beacht, ní hamháin an logáil isteach?
  5. An dtéann pasfhocail, comharthaí nó sonraí pearsanta isteach i logaí nó i dteachtaireachtaí earráide?
  6. An bhfuil rúin sa chód nó i gcomhaid leagantaithe?
  7. An cuireadh spleáchais nua leis, agus an gcothabháiltear iad?
Leid

Bíodh codanna criticiúla ó thaobh slándála, mar logáil isteach, bainistiú ceadanna, próisis íocaíochta agus uaslódálacha, léite i gcónaí ag dara duine nach raibh páirteach sa chód. Aimsíonn an tsúil choimhthíoch toimhdí a mheasann an t-údar a bheith soiléir.

Conas a chabhraíonn PHP SOS go nithiúil?

  • Déanaimid bunathbhreithniú ar d'fheidhmchlár PHP le comhpháirtithe speisialaithe, meáite de réir na gcodanna leis an riosca is airde.
  • Socraímid PHPStan nó Psalm de réir staid do thionscadail agus scríobhaimid an liosta seiceála do do Pull Requests.
  • Nascaimid an t-athbhreithniú le súil ar an bhfreastalaí agus ar an gcumraíocht, mar tagann a lán laigí chun cinn san idirghníomhú amháin.
  • Nuair a theastaíonn seiceáil ón taobh amuigh, cuirimid leis an athbhreithniú le hiniúchadh slándála agus tástáil threáite.

Conclúid: Is é athbhreithniú cóid an áit is saoire chun earráidí slándála a cheartú, is é sin sula seachadtar iad. An té a sheiceálann gach athrú le liosta gearr agus a ghabhann tríd an tionscadal ar fad ó am go chéile, laghdaíonn sé an dromchla ionsaithe go buan.

Ceisteanna coitianta

Cad é an difríocht idir athbhreithniú cóid agus tástáil threáite?

Léann athbhreithniú cóid an cód foinse agus aimsíonn sé earráidí sula seachadtar iad. Ionsaíonn tástáil threáite an feidhmchlár atá ag rith ón taobh amuigh. Cuireann an dá cheann lena chéile: aimsíonn an t-athbhreithniú cúiseanna, léiríonn an tástáil cad is féidir a shaothrú i ndáiríre.

An bhfaigheann athbhreithniú cóid laigí ar nós PHP2Shell?

Ní fhaigheann. Tá PHP2Shell san ateangaire PHP, ní i gcód an fheidhmchláir. Ní chabhraíonn ach nuashonrú PHP le hatosú ina choinne. Aimsíonn athbhreithniú earráidí i gcód féin, mar shampla injection, seiceálacha ceadanna atá ar iarraidh nó dí-shraitheadú neamhshlán.

An leor PHPStan nó Psalm d'athbhreithniú slándála?

Is bunús maith iad agus aimsíonn siad a lán earráidí go huathoibríoch. Ach ní aithníonn ach duine a bhfuil a fhios aige cad ba cheart don fheidhmchlár a dhéanamh earráidí loighice, seiceálacha ceadanna atá ar iarraidh agus toimhdí mícheart faoi phróisis.

Cá fhad a thógann athbhreithniú cóid slándála?

Braitheann sé ar an scóip. Is beag ama a thógann athbhreithniú ar gach athrú sa Pull Request. Is tionscadal ar leith é athbhreithniú iomlán ar thionscadal a tháinig chun cinn go nádúrtha, a theorannaítear de réir riosca do na codanna is tábhachtaí.

Foinsí

Teagmháil láithreach

Cuireann gach uair an chloig leis. Scríobh chugainn anois.

Déan cur síos gearr ar an gcóras, leagan PHP agus an rud a thug tú faoi deara. Cuirfimid scéala chugat, soiléireoimid an cás agus oibreoimid go cianda go dtí go mbeidh an teagmhas dúnta agus doiciméadaithe.

Cabhair láithreach