# Analiżi statika: PHPStan u Psalm

> PHPStan u Psalm spjegati: livelli tar-regoli, baseline, analiżi taint u x'tista' u x'ma tistax tagħmel l-analiżi statika għal applikazzjonijiet PHP sikuri.

Sors: https://phpsos.de/mt/php/statische-analyse/  
Stat: 25/10/2026  
Fornitur: PHP SOS, Għajnuna ta' emerġenza għal PHP u sigurtà tas-server. Għajnuna immedjata fuq WhatsApp: https://wa.me/491736494914?text=Bongu%20PHP%20SOS%2C%20g%C4%A7andna%20b%C5%BConn%20g%C4%A7ajnuna%20bis-server%20tal-PHP%20tag%C4%A7na.%20Kumpanija%3A%20%E2%80%A6%20Websajt%3A%20%E2%80%A6

**Fil-qosor:** L-analiżi statika tivverifika l-kodiċi PHP mingħajr ma teżegwih u hekk issib żbalji tat-tipi, varjabbli mhux definiti, kodiċi mejjet u telefonati fuq valuri li possibbilment huma vojta. L-għodod komuni t-tnejn huma PHPStan (livelli tar-regoli minn 0 sa 10) u Psalm (livelli ta' żbalji minn 1 sa 8, flimkien ma' analiżi taint għal flussi ta' data mhux sikuri). Isibu żbalji fl-applikazzjoni tagħkom, mhux fl-interpretatur ta' PHP; kontra vulnerabbiltajiet bħal PHP2Shell jgħin biss l-aġġornament ta' PHP.

## X'inhi l-analiżi statika?

Test jeżegwixxi l-kodiċi u jqabbel ir-riżultat. L-analiżi statika, min-naħa l-oħra, taqra l-kodiċi bħal reviżur bir-reqqa kbira u tikkonkludi mit-tipi, mill-valuri rritornati u mit-telefonati fejn xi ħaġa tista' tmur ħażin. Issib żbalji anki f'fergħat li l-ebda test qatt ma jilħaq.

Għal min jieħu d-deċiżjonijiet il-benefiċċju huwa sempliċi: żbalji li jinstabu qabel il-launch jiswew frazzjoni ta' żbalji li l-klijenti jinnutaw. Għall-iżviluppaturi hija sieħba kostanti li taħdem fl-ambjent tal-iżvilupp u fil-pipeline tas-CI. Jekk l-analiżi tindika xi ħaġa f'bidla, din ma tiġix aċċettata sakemm iż-żball jiġi rranġat. Hekk ma jikbirx legat ġdid, filwaqt li dak eżistenti jitnaqqas gradwalment. Flimkien mat-[testijiet b'PHPUnit u Pest](https://phpsos.de/mt/php/php-testen/) tifforma l-pedament tal-kwalità tal-kodiċi.

## PHPStan: livelli tar-regoli minn 0 sa 10

PHPStan jiġi installat bħala dipendenza tal-iżvilupp u jeħtieġ PHP minn 7.4 biex jaħdem:

```bash
composer require --dev phpstan/phpstan
vendor/bin/phpstan analyse src tests
```

Mingħajr indikazzjoni oħra PHPStan jivverifika biss l-minimu meħtieġ. L-istrettezza tikkontrollawha permezz ta' ħdax-il livell, kull wieħed jinkludi dawk ta' taħtu:

| Livell | X'jiġi vverifikat addizzjonalment (għażla) |
|---|---|
| 0 | klassijiet u funzjonijiet mhux magħrufa, għadd ħażin ta' argumenti, varjabbli dejjem mhux definiti |
| 3 | tipi ta' ritorn u tipi li jiġu assenjati lil proprjetajiet |
| 5 | tipi tal-argumenti fit-telefonati ta' funzjonijiet u metodi |
| 6 | indikazzjonijiet tat-tipi nieqsa |
| 8 | telefonati ta' metodi u aċċessi għal proprjetajiet fuq valuri li jistgħu jkunu null |
| 10 | l-aktar trattament strett ta' `mixed`, anki fejn tipi huma nieqsa |

B'`--level max` dejjem jaħdem l-ogħla livell. Id-dokumentazzjoni madankollu twissi li aġġornament ta' PHPStan jista' mbagħad iġib ħafna messaġġi ġodda. Sejba tipika minn livell 8:

```php
<?php
function kundenname(?Kunde $kunde): string
{
    return $kunde->name();   // PHPStan: telefonata fuq valur li jista' jkun null
}
```

## L-introduzzjoni ta' PHPStan mingħajr għargħar ta' żbalji: il-baseline

F'proġetti li kibru, PHPStan fuq livell għoli spiss jirrapporta mijiet ta' postijiet. Il-baseline issolvi l-problema: taħżen il-messaġġi eżistenti kollha f'fajl, u PHPStan minn dakinhar jirrapporta biss żbalji ġodda.

```bash
vendor/bin/phpstan analyse --level 6 src tests --generate-baseline
```

Il-fajl iġġenerat `phpstan-baseline.neon` tinkludu fil-konfigurazzjoni:

```neon
includes:
    - phpstan-baseline.neon

parameters:
    level: 6
    paths:
        - src
        - tests
```

B'hekk il-legat jibqa' iddokumentat b'mod viżibbli, filwaqt li kodiċi ġdid irid ikun nadif mill-bidu.

## Psalm u l-analiżi taint

Psalm għandu għanijiet simili għal dawk ta' PHPStan. Il-livelli jaħdmu bil-maqlub: 1 huwa l-aktar strett, 8 l-aktar ħafif, l-istandard huwa 2. Psalm jeħtieġ PHP minn 8.2 u jiġi stabbilit hekk:

```bash
composer require --dev vimeo/psalm
./vendor/bin/psalm --init
./vendor/bin/psalm --taint-analysis
```

L-analiżi taint hija speċjalment interessanti għas-sigurtà. “Taint” tfisser tniġġis: Psalm jimmarka data minn sorsi li attakkant jista' jikkontrolla, pereżempju `$_GET`, `$_POST`, `$_COOKIE`, `$_REQUEST` jew `php://input`. Imbagħad isegwi jekk din id-data tasalx mingħajr protezzjoni f'postijiet perikolużi, l-hekk imsejħa sinks: output b'`echo`, `include`, `header` jew mistoqsijiet SQL. Il-kategoriji integrati jinkludu fost oħrajn `sql`, `html`, `shell`, `include`, `eval`, `ssrf` u `unserialize`.

```php
<?php
// Psalm jirrapporta fluss minn $_GET lejn l-output HTML (kategorija html)
echo 'Hallo ' . $_GET['name'];

// Irranġat: immaskra l-output skont il-kuntest
echo 'Hallo ' . htmlspecialchars($_GET['name'] ?? '', ENT_QUOTES, 'UTF-8');
```

Id-dokumentazzjoni ta' Psalm issemmi l-limiti miftuħ: l-analiżi tassumi li l-maskerar isir sewwa. Żbalji fini, pereżempju virgoletti nieqsa madwar attribut HTML, xorta jistgħu jħallu vulnerabbiltajiet. Psalm għalhekk jirrakkomanda mistoqsijiet parametrizzati għal SQL u templates konxji tal-kuntest għal HTML. Ir-riżultati jistgħu jinħarġu fil-format SARIF, li, fost oħrajn, GitHub Code Scanning jifhem.

## Analiżi statika u sigurtà wara PHP2Shell

Hawn jixraq distinzjoni onesta. PHP2Shell, jiġifieri CVE-2026-109618 u CVE-2026-109619, jinsab fl-interpretatur ta' PHP. L-ebda għodda li taqra l-kodiċi tal-applikazzjoni tagħkom ma ssib dawn il-vulnerabbiltajiet, u l-ebda bidla fil-kodiċi ma taghlaqhom. Dan jagħmlu biss l-aġġornament għal PHP 8.5.12, 8.4.27, 8.3.36 jew 8.2.35.

Madankollu l-analiżi statika tikkontribwixxi għas-sigurtà, fi tliet postijiet:

1. **Kapaċità ta' upgrade:** Issib kodiċi li ma jibqax jaħdem fuq verżjonijiet ġodda ta' PHP. B'hekk jonqos l-ostaklu biex wieħed jaqleb minn 8.1 jew 8.2 għal verżjoni appoġġata.
2. **Vulnerabbiltajiet proprji:** L-analiżi taint issib toroq għal [SQL injection](https://phpsos.de/mt/ratgeber/sql-injection-php/), cross-site scripting jew inklużjoni ta' fajls. Il-proġett PHP jiċċara fil-politika tas-sigurtà tiegħu li input mhux ivverifikat lil funzjonijiet bħal `mysqli_query()` mhuwiex żball ta' PHP, imma responsabbiltà tal-applikazzjoni.
3. **Robustezza:** Ħafna żbalji fatali jinqalgħu minn telefonati fuq null jew tipi ħżiena. php.net, b'rabta ma' CVE-2026-109619, jagħti parir espliċitu li żbalji fatali li jistgħu jinqalgħu minn barra jiġu rranġati fl-applikazzjoni.

L-analiżi statika ma tieħux post [reviżjoni tal-kodiċi għas-sigurtà](https://phpsos.de/mt/blog/sicherheits-code-review-php/) minn bnedmin, imma tagħmilha aktar effiċjenti, għax żbalji ta' rutina jkunu diġà ġew eliminati qabel.

## Kif jgħin PHP SOS konkretament?

Bħala parti minn [awditu tas-sigurtà u test ta' penetrazzjoni](https://phpsos.de/mt/leistungen/sicherheitsaudit-penetrationstest/) nipproċedu hekk:

- **Waqqaf l-għodod:** PHPStan jew Psalm b'livell adattat u baseline, integrati fil-pipeline eżistenti tagħkom.
- **Evalwa s-sejbiet tas-sigurtà:** Niċċekkjaw ir-riżultati tal-analiżi taint u nifirdu riskji reali minn allarmi foloz.
- **Ħejji l-upgrade:** Nuru liema postijiet jimblukkaw bidla għal verżjoni appoġġata ta' PHP.
- **Ibgħat ir-riżultati:** Tirċievu lista bi prijorità b'postijiet konkreti fil-kodiċi għat-tim jew għall-aġenzija tagħkom.


## Mistoqsijiet frekwenti

**X'inhi d-differenza bejn PHPStan u Psalm?**  
It-tnejn jivverifikaw it-tipi u jsibu żbalji mingħajr eżekuzzjoni. PHPStan jgħodd il-livelli tiegħu minn 0 (laxk) sa 10 (strett), Psalm minn 8 (laxk) sa 1 (strett). Psalm jiġi b'analiżi taint integrata għal problemi tas-sigurtà.

**Nista' nintroduċi PHPStan f'proġett qadim?**  
Iva. B'baseline PHPStan jaħżen il-messaġġi eżistenti kollha f'fajl u wara jirrapporta biss żbalji ġodda. Hekk it-tim jibda mingħajr għargħar ta' żbalji u jnaqqas gradwalment il-legat.

**L-analiżi statika ssib PHP2Shell?**  
Le. PHP2Shell jinsab fl-interpretatur ta' PHP, mhux fil-kodiċi tagħkom. Kontrih jgħin biss l-aġġornament ta' PHP. L-analiżi statika madankollu tgħin biex il-kodiċi jitħejja għal verżjonijiet ġodda ta' PHP, biex l-aġġornament isir possibbli aktar malajr.

**Liema livell għandu jintgħażel?**  
Għall-bidu livell baxx mingħajr baseline jew livell ogħla b'baseline. Aktar importanti min-numru huwa li l-analiżi taħdem awtomatikament ma' kull bidla u ma tħallix żbalji ġodda jgħaddu.

## Sorsi

- [PHPStan](https://phpstan.org/)
- [Psalm](https://psalm.dev/)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
