Sitwazzjoni attwali: PHP2Shell. Żewġ vulnerabbiltajiet kritiċi ta' PHP (CVSS 9,2) jippermettu kodiċi malizzjuż mingħajr login. Patches mill-21/10/2026.X'għandu jsir issa →

Evita XSS f'PHP: kif tiddefendu b'mod sikur kontra Cross-Site Scripting

Kif l-iżviluppaturi jevitaw Cross-Site Scripting f'applikazzjonijiet ta' PHP: kodifika skont il-kuntest, auto-escaping fit-templates, tindif tal-HTML u Content Security Policy.

Stat 5 min. qariGwidi

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
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
$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:

# 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:

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.

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. Dgħufija relatata fuq in-naħa tad-database tittratta Kif tevitaw SQL injection f'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.

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

Kuntatt immedjat

Kull siegħa tgħodd. Iktbu lilna issa.

Iddeskrivu fil-qosor is-sistema, il-verżjoni ta' PHP u dak li osservajtu. Nikkuntattjawkom, niċċaraw is-sitwazzjoni u naħdmu mill-bogħod sakemm l-inċident jingħalaq u jiġi ddokumentat.

Għajnuna immedjata