# Evita XSS f'PHP: kif tiddefendu b'mod sikur kontra Cross-Site Scripting

> Evita XSS f'PHP: kodifikaw l-outputs skont il-kuntest, uża templates b'auto-escaping u ffissaw Content Security Policy. B'eżempji tal-kodiċi.

Sors: https://phpsos.de/mt/ratgeber/xss-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:** XSS f'PHP tevitawha billi tikkodifikaw kull output skont il-kuntest tiegħu: `htmlspecialchars()` għal HTML, `json_encode()` b'għażliet ta' protezzjoni għal JavaScript, URLs ivverifikati għal-links. Templates b'escaping awtomatiku jneħħu ħafna minn dan minn fuqkom. Content Security Policy u cookies HttpOnly jillimitaw il-ħsara jekk xorta jibqa' ftuħ.

## Għaliex Cross-Site Scripting għandu jiġi vverifikat issa wkoll

L-attenzjoni f'Ottubru 2026 hija fuq PHP2Shell, żewġ vulnerabbiltajiet kritiċi fl-interpretatur ta' PHP, li għalihom hemm patches mill-21/10/2026. Ħafna kumpaniji f'dan il-kuntest jiċċekkjaw l-applikazzjonijiet tal-web tagħhom. Dan huwa okkażjoni tajba biex jitħarsu wkoll dgħufijiet fil-kodiċi proprju li l-ebda aġġornament ta' PHP ma jirranġa.

Cross-Site Scripting, fil-qosor XSS, hija waħda minnhom. L-OWASP Top 10 jelenkaw XSS fil-kategorija Injection. B'differenza minn vulnerabbiltà fis-server, l-attakk hawnhekk jimmira lill-viżitaturi u lill-utenti tal-websajt tagħkom, pereżempju lill-klijenti fil-ħanut jew lill-impjegati fil-backend.

Il-konsegwenzi jistgħu jkunu sostanzjali: sessions ta' amministraturi meħuda, formoli manipulati li jibagħtu data lil terzi, jew kontenut falz fuq il-websajt tagħkom. Jekk jittieħed kont ta' amministratur, dan jista' jwassal sal-kontroll sħiħ tal-applikazzjoni.

## Kif tinħoloq XSS f'applikazzjonijiet ta' PHP?

XSS tinħoloq meta applikazzjoni turi data minn sors mhux affidabbli f'paġna mingħajr verifika. Il-browser allura ma jistax aktar jiddistingwi bejn il-kontenut tagħkom u kodiċi introdott u jesegwixxi t-tnejn.

Wieħed jiddistingwi tliet forom. F'XSS riflessa l-kontenut ġej direttament mit-talba attwali, pereżempju minn kelma tat-tiftix fl-URL. F'XSS maħżuna jinsab fid-database, pereżempju f'kumment jew f'qasam tal-profil, u jolqot lil kulħadd li jiftaħ il-paġna. XSS ibbażata fuq id-DOM tinħoloq fil-JavaScript tal-browser, meta skripts jiktbu valuri mill-URL fil-paġna.

Mhux affidabbli hija d-data kollha li mhix fissa fil-kodiċi: oqsma tal-formoli, parametri tal-URL, cookies, ismijiet ta' fajls, tweġibiet ta' interfaces esterni u kontenut mid-database proprja li xi darba ġie minn barra.

## Kodifikaw l-output sewwa skont il-kuntest

L-aktar regola importanti hija: kodifikaw meta turu l-output, u skont il-post fejn jispiċċa l-valur. Għal kontenut HTML u attributi bejn il-virgoletti `htmlspecialchars()` huwa l-mezz tal-għażla. Funzjoni żgħira ta' għajnuna tevita li jintesew l-għażliet:

```php
<?php
function e(?string $wert): string
{
    return htmlspecialchars($wert ?? '', ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML5, 'UTF-8');
}
?>
<h2><?= e($produkt['name']) ?></h2>
<input type="text" name="suche" value="<?= e($_GET['q'] ?? '') ?>">
```

Kuntesti oħra jeħtieġu mezzi oħra:

| Kuntest | Metodu sikur |
|---|---|
| Kontenut HTML, attribut bejn il-virgoletti | `htmlspecialchars()` b'`ENT_QUOTES` u UTF-8 |
| Data għal JavaScript | `json_encode()` b'`JSON_HEX_TAG`, `JSON_HEX_AMP`, `JSON_HEX_APOS`, `JSON_HEX_QUOT` |
| Parametru f'URL | `rawurlencode()` għall-valur individwali |
| URL sħiħ minn input tal-utent | Ivverifikaw l-iskema, ippermettu biss `https` u `http`, imbagħad `htmlspecialchars()` |
| Attributi mingħajr virgoletti, event handlers, CSS | evitaw, la tpoġġux valuri hemmhekk |

Għal data li skript għandu bżonn, attribut tad-data jew blokk JSON ġeneralment huwa t-triq l-aktar nadifa:

```php
<?php
$daten = json_encode($konfiguration, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT);
?>
<div id="app" data-konfig="<?= e($daten) ?>"></div>
```

Fil-JavaScript taqraw il-valur permezz tal-attribut tad-data u tiffissaw il-kontenut b'`textContent` minflok b'`innerHTML`.

## Templates, tindif tal-HTML u frameworks

Template engines bħal Twig u Blade jikkodifikaw l-outputs awtomatikament b'mod standard. Dan jeskludi parti kbira mill-iżbalji tipiċi. Isir perikoluż fejn dan l-aġir jiġi mitfi apposta, pereżempju bil-filtru `raw` f'Twig jew bis-sintassi `{!! !!}` f'Blade. Postijiet bħal dawn għandhom ikunu rari fil-kodiċi u jiġu vverifikati b'mod immirat f'kull review.

Jekk l-applikazzjoni tagħkom għandha apposta tippermetti HTML mill-utenti, pereżempju formattazzjoni fil-kummenti jew f'sistema editorjali, il-kodifika ma tkunx biżżejjed, għax l-HTML irid jintwera. Imbagħad għandkom bżonn librerija ta' tindif ivverifikata bħal HTML Purifier, li tħalli tgħaddi biss lista fissa ta' elementi u attributi permessi. Filtri proprji b'espressjonijiet regolari, skont l-esperjenza, ikollhom lakuni.

> **Importanti:**
> Ivverifikaw speċjalment oqsma tal-backend. XSS fi views li jaraw biss l-amministraturi spiss tiġi sottovalutata, imma tolqot eżattament il-kontijiet bl-aktar drittijiet.

## Sib XSS f'kodiċi eżistenti ta' PHP

F'applikazzjonijiet li kibru, l-ewwel mistoqsija ġeneralment mhix kif wieħed jikkodifika sewwa, imma fejn dan s'issa ntesa. Bidu pragmatiku huwa tiftix għal postijiet fejn varjabbli jintwerew direttament:

```bash
# Outputs diretti ta' data tat-talba
grep -rnE "(echo|print|<\?=)\s*\\\$_(GET|POST|REQUEST|COOKIE|SERVER)" src/ templates/ --include="*.php"
# Auto-escaping mitfi f'Twig u Blade
grep -rnE "\|raw|\{!!" templates/ resources/views/
```

Is-sejbiet huma ordnijiet ta' verifika, mhux riżultati lesti. XSS maħżuna tiskopriha tiftix bħal dan biss b'mod limitat, għax il-valuri hemmhekk jiġu mid-database. Ivverifikaw għalhekk addizzjonalment il-views kollha li juru kontenut tal-utenti: kummenti, profili, noti tal-ordnijiet, tickets tal-appoġġ. F'CMS u ħwienet jappartjenu espliċitament plugins u themes ta' terzi, għax hemmhekk tinsab parti kbira mil-loġika tal-output.

## It-tieni linja ta' difiża: CSP u cookies sikuri

Anke b'kodiċi bir-reqqa post jista' jintesa. Żewġ miżuri imbagħad jillimitaw il-ħsara. Content Security Policy tippermetti lill-browser biss skripts minn sorsi stabbiliti u tipprojbixxi skripts inkorporati, sakemm ma jiġux approvati espliċitament:

```apache
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'"
```

Introduċu politika bħal din pass wara pass, l-ewwel fil-modalità ta' rapport biss permezz ta' `Content-Security-Policy-Report-Only`, għax integrazzjonijiet eżistenti ta' servizzi ta' analiżi jew ta' ħlas ġeneralment jeħtieġu żidiet. Headers oħra tiddeskrivi l-gwida [Headers tas-sigurtà għal websajts](https://phpsos.de/mt/ratgeber/sicherheits-header/).

Addizzjonalment il-cookies tas-session għandhom iġorru l-attribut `HttpOnly`, biex skripts ma jistgħux jaqrawhom. Kif tassiguraw is-sessions b'mod ġenerali tinsab fil-gwida [Kif tassiguraw is-sessions f'PHP](https://phpsos.de/mt/ratgeber/session-sicherheit-php/). Dgħufija relatata fuq in-naħa tad-database tittratta [Kif tevitaw SQL injection f'PHP](https://phpsos.de/mt/ratgeber/sql-injection-php/).

## Kif tgħin PHP SOS b'mod konkret?

- Nivverifikaw it-templates u l-outputs tal-applikazzjoni tagħkom għal kodifika nieqsa jew żbaljata.
- Nevalwaw is-sejbiet skont l-aċċessibbiltà u l-kontijiet affettwati u nuru korrezzjonijiet konkreti.
- Nintroduċu Content Security Policy pass wara pass, mingħajr ma ndejqu l-funzjonijiet tal-ħanut jew tal-ħlas.
- Nittestjaw mill-ġdid wara l-korrezzjoni u niddokumentaw ir-riżultat.

Verifika indipendenti tiddeskrivi s-servizz [Awdit tas-sigurtà u test ta' penetrazzjoni](https://phpsos.de/mt/leistungen/sicherheitsaudit-penetrationstest/).


## Mistoqsijiet frekwenti

**htmlspecialchars huwa biżżejjed kontra XSS?**  
Għal test normali fil-kontenut HTML u f'attributi bejn il-virgoletti, iva, jekk tindikaw ENT_QUOTES u s-sett tal-karattri UTF-8. F'JavaScript, f'URLs jew f'CSS japplikaw regoli oħra, hemmhekk teħtieġ kodifika proprja u xierqa.

**Għandi nfiltra l-inputs meta nsalvahom jew meta nuri l-output?**  
Kodifikaw meta turu l-output, skont id-destinazzjoni. L-inputs għandkom tivverifikawhom meta jaslu għal plawżibbiltà, pereżempju tul u format. Min jiffiltra biss meta jsalva jinjora data minn sorsi oħra u jagħmel użu aktar tard f'kuntesti oħra aktar diffiċli.

**X'jagħti Content Security Policy?**  
Content Security Policy tiffissa minn liema sorsi l-browser jista' jgħabbi u jesegwixxi skripts. Tista' tillimita b'mod sinifikanti l-effetti ta' vulnerabbiltà XSS li ma ġietx innotata, imma ma tissostitwixxix kodifika korretta.

**Kif nippermetti formattazzjoni bħal grassett jew links f'kummenti?**  
Użaw librerija ta' tindif tal-HTML ivverifikata b'lista permessa ta' elementi u attributi. Espressjonijiet regolari proprji biex jitneħħew skripts huma suxxettibbli għal żbalji u m'għandhomx jintużaw.

## Sorsi

- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
- [php.net: Avviżi tas-sigurtà](https://www.php.net/)
