Logo HuTor Tech HuTor Tech
← Všetky články

· hutor.tech

Ako spraviť audit staršieho PHP kódu

Ako spraviť audit staršieho PHP kódu

Audit odpovedá na tri otázky: čo sa pokazí, čo bude stáť peniaze a čo sa dá opraviť lacno. Všetko ostatné je názor. Audit držíme približne v týždni a uzatvárame ho dokumentom, podľa ktorého vie konať aj netechnický majiteľ.

Začnite faktami, ktoré nazbiera stroj. Verzie PHP a frameworku oproti dátumom konca podpory; počet súborov a riadkov; najväčšie triedy; koľko kódu je vo vendore a koľko je vášho; či existujú testy a či prechádzajú. `composer audit` a `npm audit` dajú známe zraniteľnosti za pár minút a PHP bez podpory býva najdrahším nálezom celej správy.

Potom hľadajte tvary, ktoré predpovedajú problémy:
— SQL poskladané spájaním reťazcov s dátami z požiadavky;
— heslá hashované cez md5 alebo sha1, prípadne vôbec;
— prihlasovacie údaje commitnuté v repozitári;
— nahrávanie súborov, ktoré verí MIME typu od klienta;
— jeden súbor na niekoľko tisíc riadkov, od ktorého závisí všetko ostatné;
— priečinok `vendor` upravovaný ručne — `composer install` by tie opravy zmazal.

Aplikáciu spúšťajte, nielen čítajte. Zapnite log dopytov na skutočnej stránke a spočítajte ich: N+1 je najčastejšia výkonnostná chyba zdedeného kódu a najľahšie sa ukazuje. Sledujte log pomalých dopytov. Najťažšiu stránku raz prežeňte profilerom — obvykle sa ukáže, že za čakanie môže jeden stĺpec bez indexu, nie framework.

Prevádzku preverte rovnako vážne ako kód: zálohy (a či ich niekto niekedy obnovil), nasadenie (skript, alebo človek s FTP), logy, monitoring, testovacie prostredie. Uprataný kód nasadzovaný ručne o polnoci je nebezpečnejší než neporiadny s pipeline.

Správu píšte pre toho, kto platí. Nálezy zoskupte podľa rizika, ku každému pripíšte hrubú cenu a oddeľte „treba opraviť hneď" od „oplatí sa spraviť, keď už tu sme". Pridajte dve-tri rýchle výhry, ktoré ste našli — index, hlavičku cache, aktualizáciu —, aby prvá faktúra kupovala niečo viditeľné.

Audit sa končí plánom, nie rozsudkom. Prepis odznova je takmer vždy zlá odpoveď: starší kód je škaredý preto, lebo v sebe nesie roky obchodných pravidiel, ktoré nikde inde nikto nezapísal.