Cross-site scripting: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
SOKATEMLO FEDERICOSOWNA Etichetta: Rimozione di avvisi di servizio |
M7 (discussione | contributi) m Annullate le modifiche di 151.51.118.208 (discussione), riportata alla versione precedente di Italo Stefano Moro |
||
Riga 1:
{{S|sicurezza informatica|Internet}}
Il '''Cross-site scripting''' ('''XSS''') è una [[vulnerabilità]] che affligge [[Web dinamico|siti web dinamici]] che impiegano un insufficiente controllo dell'input nei [[form]]. Un XSS permette ad un [[hacker]] di inserire codice al fine di modificare il contenuto della pagina web visitata. In questo modo è possibile sottrarre dati sensibili presenti nel browser degli utenti che visiteranno successivamente quella pagina.
Secondo [[symantec]] nel [[2007]] l'80% di tutte le violazioni sono dovute ad attacchi '''XSS'''<ref>{{en}} [http://eval.symantec.com/mktginfo/enterprise/white_papers/b-whitepaper_exec_summary_internet_security_threat_report_xiii_04-2008.en-us.pdf Symantec Internet Security Threat Report: Trends for July-December 2007]</ref>.
Gli attacchi alle vulnerabilità XSS hanno effetti dirompenti per i siti con un elevato numero di utenti, dato che è sufficiente una sola compromissione per colpire chiunque visiti la stessa pagina.
== Tipologie ==
Esistono due tipi di vulnerabilità XSS:
* '''stored''', nelle quali un attaccante è in grado di modificare permanentemente il contenuto di una pagina web, ad esempio inserendo un commento opportunamente preparato ad un post in un blog.
* '''reflected''', grazie alle quali è possibile produrre un URL che, utilizzato sul sito vulnerabile, ne altererà il contenuto delle pagine in modo non permanente ed esclusivamente per le richieste [[Hyper Text Transfer Protocol|HTTP]] che utilizzano tali [[URL]] appositamente forgiati.
== L'attacco ==
Questa vulnerabilità è dovuta a errori dei programmatori, che molto spesso trascurano completamente la validazione delle informazioni passate in input con le richieste [[Hyper Text Transfer Protocol|HTTP]], sia [[GET]] che [[POST]].
Per verificare la vulnerabilità di un sito è sufficiente (ad esempio) provare ad inserire del codice [[javascript]] nel suo campo di ricerca allo scopo di produrre effetti sulla pagina risultante, causando l'esecuzione del codice inserito.
Il seguente è un semplice frammento di codice adatto al test:<br />
<source lang="html4strict"><script type="text/javascript">alert('XSS')</script></source><br />
Tra le operazioni che è possibile indurre il browser ad eseguire vi sono l'invio del contenuto di [[cookie]] a terze parti e l'aggiunta di elementi (X)HTML alla pagina, operazione che può servire facilmente a sottrarre credenziali di autenticazione per mezzo di un modulo di inserimento contraffatto sovrapposto ad un modulo originariamente presente nella pagina web.
== Come difendersi ==
=== Escape degli input ===
Il Metodo più sicuro per un programmatore PHP, è quello di usare una delle tre funzioni che permettono l'escape dei caratteri html inserite in una stringa. Dette funzioni sono: htmlspecialchars(), htmlspecialentities(), strip_tags: tutte sicure, si differenziano soltanto per l'output:
<br/>
htmlspecialchars()
<source lang="html4strict">
echo htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
# L'output sarà:
<a href='test'>Test</a> dato che converte i caratteri "particolari", in codice html.
</source>
htmlentities
<source lang="html4strict">
echo htmlentities("I'm <b>bold</b>");
# L'Output sarà di conseguenza:
I'm <b>bold</b>
</source>
strip_tags
<source lang="html4strict">
$text='<p>Testo interno al paragrafo.</p><!-- commento --> <a href="#ancora">Altro testo</a>';
echo strip_tags($text);
# Il particolare output di questa funzione, sarà:
Testo interno al paragrafo. Altro testo
# E' possibile non rimuovere alcuni tag utilizzando il secondo parametro opzionale:
echo strip_tags($text,'<p>');
# Il particolare output di questa funzione, sarà:
<p>Testo interno al paragrafo.</p> Altro testo
</source><br/>
=== Aggiornare il browser ===
Per gli utenti, una possibile difesa è mantenere aggiornati i browser, le ultime versioni includono un filtro per questo tipo di attacchi, come [[Internet Explorer]]<ref>[http://windows.microsoft.com/it-IT/internet-explorer/products/ie-9/features/cross-site-scripting-filter Filtro Internet explorer 9]</ref> e [[Mozilla Firefox]]<ref>[http://www.ilsoftware.it/articoli.asp?id=5566 Mozilla contro gli attacchi XSS: novità per Firefox]</ref>.
== Note ==
<references />
==Voci correlate==
*[[HTML Tidy]]
{{Portale|Sicurezza informatica}}
[[Categoria:Tecniche di attacco informatico]]
[[ar:برمجة عبر مواقع]]
[[cs:Cross-site scripting]]
[[de:Cross-Site-Scripting]]
[[el:Cross-site scripting]]
[[en:Cross-site scripting]]
[[es:Cross-site scripting]]
[[et:Murdskriptimine]]
[[fa:حملات تزریق کد]]
[[fi:Cross site scripting]]
[[fr:Cross-site scripting]]
[[he:XSS]]
[[ja:クロスサイトスクリプティング]]
[[ko:사이트 간 스크립팅]]
[[lt:XSS]]
[[lv:XSS]]
[[ml:ക്രോസ് സൈറ്റ് സ്ക്രിപ്റ്റിംഗ്]]
[[nl:Cross-site scripting]]
[[no:Cross Site Scripting]]
[[pl:Cross-site scripting]]
[[pt:Cross-site scripting]]
[[ru:Межсайтовый скриптинг]]
[[sk:Cross-site scripting]]
[[sv:Cross site scripting]]
[[tr:Cross site scripting]]
[[uk:Міжсайтовий скриптінг]]
[[zh:跨網站指令碼]]
|