# Ivvalida u iffiltra l-inputs f'PHP b'filter_var

> Ivvalida l-inputs f'PHP b'filter_var u filter_input_array: numri, email, URL, bool, listi ta' permess u limiti. Bi eżempji ta' kodiċi.

Sors: https://phpsos.de/mt/blog/eingaben-validieren-php/  
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-inputs f'PHP tivvalidawhom b'`filter_var()` jew `filter_input_array()` u regoli ċari għal kull qasam: tip, firxa, tul u valuri permessi. Dak li ma jaqbilx jiġi rifjutat, mhux mibdul bil-kwiet. Il-validazzjoni hija importanti għal data nadifa u inqas wiċċ ta' attakk, imma ma tissostitwix la prepared statements kontra SQL injection u lanqas kodifika xierqa għall-kuntest kontra XSS.

## Għaliex „iffiltra kollox“ mhuwiex kunċett

F'ħafna proġetti PHP qodma, fil-bidu ta' kull fajl insibu ċiklu li jibgħat il-valuri kollha minn `$_GET` u `$_POST` permezz ta' funzjoni ta' tindif. Dan iħossu sigur. Fil-prattika xi drabi jneħħi wisq, pereżempju apostrofi f'kunjomijiet, u xi drabi ftit wisq, għax l-istess funzjoni suppost tgħodd fl-istess ħin għal SQL, HTML u ismijiet ta' fajls.

Validazzjoni sensata taħdem b'mod differenti: tistaqsi għal kull qasam x'huwa permess hemmhekk. Kwantità ta' ordni hija numru sħiħ bejn 1 u limitu massimu. Qasam ta' ordni huwa wieħed minn tliet valuri fissi. Data hija f'format speċifiku u wara data oħra. Kull ħaġa oħra tiġi rifjutata.

OWASP jiddistingwi hawnhekk żewġ livelli: il-verifika **sintattika**, jekk valur għandux il-forma t-tajba, u l-verifika **semantika**, jekk fil-kuntest tagħmilx sens. It-tnejn jappartjenu fuq is-server; verifiki fil-browser iservu biss għall-konvenjenza.

## Liema filtri jiġu ma' PHP

L-estensjoni tal-filtri hija inkluża awtomatikament f'PHP. L-aktar filtri importanti ta' validazzjoni skont il-manwal ta' PHP:

| Filtru | Jivverifika | Għażliet importanti u noti |
|---|---|---|
| `FILTER_VALIDATE_INT` | numru sħiħ | `min_range`, `max_range` |
| `FILTER_VALIDATE_FLOAT` | numru bid-dećimali | `decimal` għas-separatur |
| `FILTER_VALIDATE_BOOL` | valur ta' verità | b'`FILTER_NULL_ON_FAILURE` jista' jiġi distint minn „falz“ |
| `FILTER_VALIDATE_EMAIL` | forma ta' indirizz tal-posta | ma jippruvax li l-kaxxa tal-posta teżisti |
| `FILTER_VALIDATE_URL` | forma ta' URL | ivverifikaw l-iskema intom, l-ebda domains internazzjonalizzati |
| `FILTER_VALIDATE_IP` | indirizz IP | flags għal firxiet privati u riżervati |
| `FILTER_VALIDATE_REGEXP` | mudell proprju | ankraw il-mudell b'`^` u `$` |

Il-filtru tat-tindif `FILTER_SANITIZE_STRING` huwa skadut minn PHP 8.1. Min għadu juża, għandu jibdel il-validazzjoni għal filtri adattati u jużaw `htmlspecialchars()` għall-output.

## filter_var f'PHP: ivverifika formola b'mod nadif

B'`filter_input_array()` formola kollha tista' tiġi vverifikata f'pass wieħed kontra definizzjoni. Oqsma mhux magħrufa ma jiġux meħuda:

```php
<?php
declare(strict_types=1);

$regeln = [
    'menge'   => ['filter' => FILTER_VALIDATE_INT,
                  'options' => ['min_range' => 1, 'max_range' => 50]],
    'email'   => FILTER_VALIDATE_EMAIL,
    'agb'     => ['filter' => FILTER_VALIDATE_BOOL, 'flags' => FILTER_NULL_ON_FAILURE],
    'versand' => ['filter' => FILTER_VALIDATE_REGEXP,
                  'options' => ['regexp' => '/^(standard|express)$/']],
];

$daten  = filter_input_array(INPUT_POST, $regeln) ?? [];
$fehler = [];

foreach ($regeln as $feld => $_) {
    if (!array_key_exists($feld, $daten) || $daten[$feld] === false || $daten[$feld] === null) {
        $fehler[] = $feld;
    }
}

if ($fehler !== []) {
    http_response_code(422);
    // Uri messaġġ ta' żball għal kull qasam, tipproċessax l-inputs
}
```

Innotaw it-tqabbil strett b'`===`: valur validu `0` jew string vojt ma jistax jiġi kkonfuż ma' falliment. Għaliex tqabbil laxk huwa perikoluż hawnhekk jispjegah [Type Juggling: tqabbil laxk bħala riskju ta' sigurtà](https://phpsos.de/mt/blog/type-juggling-php/). Kif PHP jagħmel disponibbli d-data tat-talba fl-ewwel lok jiddeskrivi [Superglobals: $_GET, $_POST, $_FILES u oħrajn](https://phpsos.de/php/superglobals/).

## Nasbiet b'email, URL u testi ħielsa

Xi filtri jagħmlu inqas milli jissuġġerixxi isimhom:

1. **URLs:** `FILTER_VALIDATE_URL` jaċċetta wkoll skemi oħra minbarra http u https. Ivverifikaw l-iskema wara b'`parse_url()` kontra lista fissa. Jekk l-URL jinġieb mis-server, japplikaw regoli addizzjonali, ara [Evita Server-Side Request Forgery f'PHP](https://phpsos.de/mt/blog/ssrf-in-php/).
2. **Indirizzi tal-posta:** Il-filtru jivverifika l-forma, mhux is-sjieda. Min irid ikun żgur jibgħat link ta' konferma.
3. **Test ħieles:** Ismijiet, messaġġi u indirizzi bilkemm jistgħu jiġu limitati b'mod sensat għal karattri. Ivverifikaw it-tul u l-kodifika tal-karattri, pereżempju b'`mb_check_encoding($wert, 'UTF-8')`, u fl-output fdaw fuq il-kodifika.
4. **Espressjonijiet regolari:** Mingħajr `^` u `$` mudell jivverifika biss jekk jidhirx x'imkien fit-test, mhux jekk il-valur kollu jaqbilx.
5. **Arrays minflok strings:** Attakkant jista' jibgħat array minflok test. Mingħajr verifika tat-tip dan iwassal għal twissijiet jew imġiba mhux mistennija.

> **Suġġeriment:**
> Għal valuri fissi ta' għażla bħal ordni, lingwa jew tip ta' konsenja, lista ta' permess b'`in_array($wert, $erlaubt, true)` jew espressjoni `match` hija aktar sempliċi u stretta minn kull espressjoni regolari.

Żball frekwenti ieħor jirrigwarda numri b'tifsira, pereżempju prezzijiet, kwantitajiet jew skontijiet. Li valur huwa numru validu ma jgħid xejn dwar jekk huwiex permess fil-kuntest. Kwantità negattiva, skont ogħla mill-valur tal-oġġetti jew prezz meħud mill-formola minflok mid-database huma żbalji klassiċi tal-loġika. Prezzijiet, drittijiet u valuri tal-istatus għalhekk dejjem jappartjenu fuq is-server u qatt f'oqsma moħbija tal-formola.

## JSON, webhooks u importazzjonijiet: validazzjoni lil hinn mill-formoli

Ħafna dħul illum mhux formoli aktar, imma talbiet JSON minn apps, webhooks minn servizzi ta' ħlas jew fajls ta' importazzjoni minn fornituri. Anke hemmhekk japplika: l-ewwel aqra b'mod sigur, imbagħad ivverifika. OWASP jagħti parir li l-qies u l-fond tal-inkaljar jiġu llimitati qabel ma d-data titqies fl-ewwel lok. F'PHP `json_decode()` b'fond massimu u `JSON_THROW_ON_ERROR` jieħu ħsieb parti minn dan:

```php
<?php
$roh = file_get_contents('php://input', false, null, 0, 65536); // massimu 64 KB
try {
    $daten = json_decode($roh, true, 16, JSON_THROW_ON_ERROR);
} catch (JsonException) {
    http_response_code(400);
    exit;
}
if (!is_array($daten) || !is_string($daten['bestellnummer'] ?? null)) {
    http_response_code(422);
    exit;
}
```

Mal-webhooks, qabel il-verifika tal-kontenut tqum il-mistoqsija jekk il-messaġġ ġiex tabilħaqq mis-servizz indikat. Jekk is-servizz joffri firma, ivverifikawha u qabblu b'`hash_equals()`. Mal-fajls ta' importazzjoni ivverifikaw kull linja bħal formola u twaqqfu b'mod nadif f'każ ta' żbalji, minflok ma tieħdu rekords nofs.

Messaġġi ta' żball għandhom isemmu l-qasam ikkonċernat, imma ma jirritornawx il-valur rifjutat mhux iffiltrat. Inkella fil-messaġġ ta' żball innifsu jinħoloq punt ġdid ta' output li jeħtieġ jerġa' jiġi kkodifikat.

## Dak li l-validazzjoni ma tistax twettaq

Il-validazzjoni tnaqqas il-wiċċ ta' attakk, imma skont OWASP mhijiex id-difiża ewlenija kontra injection. Kunjom b'apostrofu huwa validu u xorta waħda jrid jiddaħħal b'mod sigur f'database. Dan jirnexxi biss b'prepared statements, kif turi l-gwida [Evita SQL Injection f'PHP](https://phpsos.de/mt/ratgeber/sql-injection-php/). U test validu ta' kumment isir bla periklu biss b'kodifika xierqa għall-kuntest fl-output.

L-ordni t-tajba hija għalhekk: ivvalida meta tirċievi, ipparametrizza meta tipproċessa, ikkodifika fl-output. Barra minn hekk quddiemhom jappartjenu limiti tal-qies: talbiet li huma kbar wisq is-server tal-web u PHP m'għandhomx jipproċessawhom kompletament fl-ewwel lok. Għal dan iservu issettjar bħal `post_max_size`, li wara PHP2Shell għandu jiġi vverifikat xorta waħda.

## Kif tgħin PHP SOS b'mod konkret?

- Nirreġistraw id-dħul kollu tal-applikazzjoni tagħkom: formoli, interfaces, uploads, importazzjonijiet u webhooks.
- Niddeterminaw għal kull qasam x'huwa permess u nissostitwixxu funzjonijiet ġenerali ta' tindif b'verifiki ċari.
- Nivverifikaw jekk l-aċċessi għad-database u l-outputs humiex sigurati indipendentement mill-validazzjoni.
- Niddokumentaw ir-regoli b'mod li t-tim tagħkom ikun jista' jkompli bihom f'funzjonijiet ġodda.

Verifika sistematika tiddeskriviha s-servizz [Awditu tas-sigurtà u test ta' penetrazzjoni](https://phpsos.de/mt/leistungen/sicherheitsaudit-penetrationstest/).


## Mistoqsijiet frekwenti

**X'inhi d-differenza bejn il-validazzjoni u t-tindif?**  
Il-validazzjoni tivverifika jekk valur jaqbilx mal-aspettattivi, u inkella tirrifjutah. It-tindif ibiddel il-valur, pereżempju billi jneħħi karattri. Għal deċiżjonijiet ta' sigurtà r-rifjut huwa kważi dejjem aħjar, għax valur mibdul bil-kwiet jista' joħloq żbalji ġodda.

**FILTER_SANITIZE_STRING għadu jista' jintuża?**  
Il-filtru huwa mmarkat bħala skadut minn PHP 8.1. Il-manwal ta' PHP jirrakkomanda minfloku htmlspecialchars() fl-output. Kodiċi eżistenti għandkom tibdluh, għax funzjonijiet skaduti jistgħu jitneħħew f'verżjonijiet futuri.

**FILTER_VALIDATE_URL huwa biżżejjed biex il-links isiru sikuri?**  
Le. Il-filtru jivverifika biss il-forma tal-indirizz. Skont il-manwal, URL validu m'għandux għalfejn jibda b'http, għalhekk intom stess għandkom tivverifikaw l-iskema kontra lista ta' permess bħal https. Ismijiet ta' domains internazzjonalizzati l-filtru jirrifjutahom.

**Jeħtieġ nivvalida wkoll data mid-database proprja?**  
Fl-output titqies bħala mhux affidabbli u tiġi kkodifikata kif suppost. Validazzjoni ġdida hija sensata meta d-data oriġinarjament ġiet minn barra u issa tintuża f'kuntest ġdid, pereżempju bħala isem ta' fajl jew parti minn kmand.

**Il-validazzjoni tgħin kontra PHP2Shell?**  
Le. PHP2Shell jirrigwarda l-ipproċessar tat-talbiet fl-interpretatur ta' PHP, qabel ma jaħdem xi kodiċi tal-applikazzjoni tagħkom. Kontra dan jgħin biss l-aġġornament ta' PHP segwit mir-restart tal-proċessi kollha ta' PHP.

## Sorsi

- [Manwal ta' PHP: kostanti tal-filtri](https://www.php.net/manual/de/filter.constants.php)
- [OWASP Input Validation Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
