Cross-site scripting: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
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 od eseguire codice lato server al fine di attuare un insieme variegato di attacchi quali ad esempio: raccolta, manipolazione e reindirizzamento di informazioni riservate, visualizzazione e modifica di dati presenti sui server, alterazione del comportamento dinamico delle pagine web ecc... Nell'accezione ordierna, la tecnica ricomprende l'utilizzo di qualsiasi linguaggio di scripting tra i quali: JavaScript, VBScript, Flash, HTML e SQL.
 
Secondo un rapporto di [[symantecSymantec]] 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>.
 
==Origine e trasformazione del concetto==
 
L'espressione "cross-site scripting" originariamente si riferiva unicamente ad attacchi basati sull'utilizzo di frammenti di codice [[JavaScript]] inseriti all'interno di unachiamate paginaa pagine web clientdinamiche poste su un web-sideserver (tecnica chiamatafacente parte dei metodi di [[code injection]]) in modo che il server remoto eseguisse operazioni diverse da quelle previste originariamente dall'applicativo web. Tale definizione gradualmente si è estesa ricomprendendo anche altre modalità di "iniezione di codice" basate non solo su [[Java (programming language)|Java]] ma anche su [[ActiveX]], [[VBScript]], [[Adobe Flash|Flash]], o anche puro [[HTML]] e query [[SQL]] (quest'ultima tecnica chiamata più diffusamente SQL Injection). Ciò ha generato una diffusacerta confusione nella terminologia riferita alla [[information security|Sicurezza Informatica]]: il termine, infatti, ricomprende oggi tutto un insieme di tecniche di attacco e non esclusivamente quella basata su manipolazione di codice JavaScript.<ref name=Grossman>{{cite web|author=Grossman, Jeremiah|title= The origins of Cross-Site Scripting (XSS)|url= http://jeremiahgrossman.blogspot.com/2006/07/origins-of-cross-site-scripting-xss.html |date=July 30, 2006|accessdate=September 15, 2008}}</ref><ref name=Wikipedia>{{cite web|author=Wikipedia|title=Cross-site scripting |url=http://en.wikipedia.org/wiki/Cross-site_scripting}}</ref>
 
== Tipologie ==
Esistono due tipi di vulnerabilità XSS:
* '''stored''', quando il codice di scripting viene inserito in maniera permanente sul server (es. modificando una pagina web dinamica JSP o PHP);
* '''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''', graziequando alleil qualicodice èdi possibilescripting produrreviene uneseguito URLsfruttando che,alcune utilizzatoconosciute sulvulnerabilità sitodell'applicativo vulnerabileweb, neinserendosi altereràdi ilfatto contenutoall'interno delledel paginenormale influsso mododi nonesecuzione permanentedel edcodice esclusivamenteapplicativo per(es. leinserendo opportuni script all'interno delle richieste GET o POST del protocollo [[Hyper Text Transfer Protocol|HTTP]] che utilizzano tali [[URL]] appositamente forgiati).
 
== L'Un esempio di 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]] (ad esempio, l'input di una stringa in un form di ricerca).
 
Riga 24:
 
== Come difendersi ==
=== Escape degli input in PHP ===
Il Metodometodo 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/>