cross site scripting attack tutorial with examples
Una guida completa all'attacco Cross Site Scripting (XSS), come prevenirlo e ai test XSS.
Cross Site Scripting (XSS) è uno degli attacchi più popolari e vulnerabili conosciuto da ogni tester avanzato. È considerato uno degli attacchi più rischiosi per le applicazioni web e può portare anche conseguenze dannose.
XSS viene spesso confrontato con simili attacchi lato client, poiché i linguaggi lato client vengono utilizzati principalmente durante questo attacco. Tuttavia, l'attacco XSS è considerato più rischioso, a causa della sua capacità di danneggiare anche le tecnologie meno vulnerabili.
In questo tutorial sugli attacchi XSS, ti forniremo una panoramica completa dei suoi tipi, strumenti e misure preventive con esempi perfetti in termini semplici per una tua facile comprensione.
Cosa imparerai:
- Introduzione a XSS Attack
- Come viene eseguito XSS?
- Tipi di attacchi Cross Site Scripting
- Come testare contro XSS?
- Strumenti di test XSS
- Confronto con altri attacchi
- Modi per prevenire XSS
- Prevenzione secondo le tecnologie
- Cheat Sheets XSS
- Conclusione
- Lettura consigliata
Introduzione a XSS Attack
L'attacco Cross Site Scripting è un'iniezione di codice dannoso, che verrà eseguita nel browser della vittima. Lo script dannoso può essere salvato sul server web ed eseguito ogni volta che l'utente chiama la funzionalità appropriata. Può anche essere eseguito con gli altri metodi, senza alcuno script salvato nel server web.
Lo scopo principale di questo attacco è rubare i dati sull'identità dell'altro utente: cookie, token di sessione e altre informazioni. Nella maggior parte dei casi, questo attacco viene utilizzato per rubare i cookie dell'altra persona. Come sappiamo, i cookie ci aiutano ad accedere automaticamente. Pertanto con i cookie rubati, possiamo accedere con le altre identità. E questo è uno dei motivi per cui questo attacco è considerato uno degli attacchi più rischiosi.
L'attacco XSS viene eseguito sul lato client. Può essere eseguito con diversi linguaggi di programmazione lato client. Tuttavia, molto spesso questo attacco viene eseguito con Javascript e HTML.
Lettura consigliata=> Tutorial sull'inserimento di HTML
Come viene eseguito XSS?
L'attacco Cross Site Scripting significa inviare e iniettare codice o script dannosi. Il codice dannoso viene solitamente scritto con linguaggi di programmazione lato client come Javascript, HTML, VBScript , Flash, ecc. Tuttavia, Javascript e HTML vengono utilizzati principalmente per eseguire questo attacco.
Questo attacco può essere eseguito in diversi modi. A seconda del tipo di attacco XSS, lo script dannoso può essere riflesso nel browser della vittima o archiviato nel database ed eseguito ogni volta che l'utente chiama la funzione appropriata.
Il motivo principale di questo attacco è la convalida dell'input dell'utente inappropriata, in cui l'input dannoso può entrare nell'output. Un utente malintenzionato può inserire uno script, che verrà inserito nel codice del sito web. Quindi il browser non è in grado di sapere se il codice eseguito è dannoso o meno.
Pertanto uno script dannoso viene eseguito sul browser della vittima o viene visualizzato qualsiasi modulo contraffatto per gli utenti. Esistono diverse forme in cui può verificarsi un attacco XSS.
Le principali forme di Cross Site Scripting sono le seguenti:
- Cross Site Scripting può verificarsi sullo script dannoso eseguito sul lato client.
- Pagina o modulo falsi visualizzati all'utente (in cui la vittima digita le credenziali o fa clic su un collegamento dannoso).
- Sui siti web con annunci pubblicitari visualizzati.
- E-mail dannose inviate alla vittima.
Questo attacco si verifica quando l'utente malintenzionato trova le parti vulnerabili del sito Web e le invia come input dannoso appropriato. Lo script dannoso viene iniettato nel codice e quindi inviato come output all'utente finale.
Analizziamo un semplice esempio: Considera che abbiamo un sito web con un campo di ricerca.

Se il campo di ricerca è vulnerabile, quando l'utente immette uno script, verrà eseguito.
Considera, un utente inserisce uno script molto semplice come mostrato di seguito:
alert(‘XSS’) 
Quindi, dopo aver fatto clic su 'Ricerca' pulsante, verrà eseguito lo script inserito.

Come vediamo in Esempio ,lo script digitato nel campo di ricerca viene eseguito. Questo mostra solo la vulnerabilità dell'attacco XSS. Tuttavia, è possibile digitare anche uno script più dannoso.
Molti tester confondono l'attacco Cross Site Scripting con Iniezione Javascript , che viene eseguito anche sul lato client. In entrambi, viene iniettato lo script dannoso degli attacchi. Tuttavia, nel caso di attacco XSS i tag non sono necessari per eseguire lo script.
Per esempio :
;Inoltre, può essere uno script eseguito sull'altro evento.
Per esempio:Al passaggio del mouse.
Analizziamo un altro esempio:Considera, abbiamo una pagina in cui viene visualizzata l'ultima recensione del libro sul sito web.
Il codice di questa pagina apparirà come mostrato di seguito:
print '' print '. If this vulnerability is present in the web application, an indicated text will be inserted intags. Trying to pass some code through HTTP request as this is also a method to check if this attack is possible.
Generally, while testing for possible XSS attack, input validation should be checked and the tester should be conscious while checking the website’s output. Also if a code review is being performed, it is important to find how input can get into the output.
XSS Testing Tools
As Cross Site Scripting attack is one of the most popular risky attacks, there are a plenty of tools to test it automatically. We can find various scanners to check for possible XSS attack vulnerabilities – like, Nesus and Nikto. Both of which are considered as quite reliable.
From my software testing career, I would like to mention SOAP UI tool. SOAP UI can be considered as a quite strong tool for checking against the possible XSS attacks. It contains ready templates for checking against this attack. It really simplifies the testing process.
However, in order to test for this vulnerability with SOAP UI tool, API level testing should already be automated with that tool. Another solution to test against XSS can be browser plugins. However, plugins are considered as quite a weak tool to check against this type of attack.
Even while testing automatically, the tester should have good knowledge of this attack type and should be able to analyze the results appropriately.
Good knowledge is also helpful while selecting the testing tool. Also, it is important to know, that while performing scanning for security vulnerabilities with an automatic tool, testing manually is also a good practice and this way the tester will be able to see the results and analyze them.
Recommended Tool:
#1) Kiuwan

Find and fix vulnerabilities in your code at every stage of the SDLC.
Kiuwan is compliant with the most stringent security standards including OWASP, CWE, SANS 25, HIPPA, and more. Integrate Kiuwan in your IDE for instant feedback during development.
Kiuwan supports all major programming languages and integrates with leading DevOps tools.
=> Scan your code for free
Comparison with Other Attacks
XSS is considered to be one of the riskiest attacks, as its main purpose is to steal the website’s or system’s user identities. Also, XSS attack can be performed with different client-side languages like Javascript, HTML, VBScript, Flash, etc. And this makes it more harmful and widespread than the other possible attacks.
Testing for XSS attack is quite similar to testing for the other possible client-side attacks. However, it is important to remember what additional cases should be checked while testing for XSS.
Another thing, that makes this attack riskier is the possibility to be stored in the web service – this way it can affect many users for a longer period of time. XSS sometimes can be performed to even less vulnerable systems and its vulnerabilities are sometimes difficult to be found.
Also, while comparing with the other attacks, XSS has many ways to be performed and affect the website as well.
Ways to Prevent XSS
Though this type of attack is considered to be one of the most dangerous and risky one, still a preventing plan should be prepared. Because of the popularity of this attack, there are quite many ways to prevent it.
Commonly used main prevention methods include:
- Data validation
- Filtering
- Escaping
The first step in the prevention of this attack is Input validation . Everything, that is entered by the user should be precisely validated, because the user’s input may find its way to the output. Data validation can be named as the basis for ensuring the system’s security. I would remind, that the idea of validation is not to allow inappropriate input.
Therefore it just helps to reduce the risks, but may not be enough to prevent the possible XSS vulnerability.
Another good prevention method is user’s input filtering. The idea of the filtering is to search for risky keywords in the user’s input and remove them or replace them by empty strings.
Those keywords may be:
- tags
- Javascript commands
- HTML markup
Input filtering is quite easy to practice. It can be performed in different ways too.
Like:
- By developers who have written server-side code.
- Appropriate programming language’s library is being used.
In this case, some developers write their own code to search for appropriate keywords and remove them. However, the easier way would be to select appropriate programming languages library to filter the user’s input. I would like to comment, that using libraries is a more reliable way, as those libraries were used and tested by many developers.
Another possible prevention method is characters escaping . In this practice, appropriate characters are being changed by special codes. For Example, Meanwhile, good testing should not be forgotten as well. It should be invested in good software testers knowledge and reliable software testing tools. This way good software quality will be better assured.
Prevention According to Technologies
As already discussed, filtering and characters escaping are the main prevention methods. However, it can be performed differently in different programming languages. Some programming languages have appropriate filtering libraries and some do not.
It should be mentioned, that filtering can be performed quite easily in Java and PHP programming languages, as they have appropriate libraries for it.
Java technology is quite widely used, therefore there are many solutions to it. If you are using Spring technology and if you would like to escape HTML for the whole application, then you have to write the appropriate code in the project’s web.xml file.
defaultHtmlEscape true Questo codice cambierà l'escape HTML per l'intera applicazione.
Se desideri cambiare l'escape HTML per i moduli della pagina appropriata, il codice dovrebbe essere scritto come segue:
Ci sono molti filtri XSS pronti sotto forma di file .jar. Ricordo che il file .jar deve essere aggiunto al tuo progetto e solo allora le sue librerie possono essere utilizzate. Uno di questi filtri XSS è xssflt.jar, che è un filtro servlet. Questo file .jar può essere facilmente scaricato da Internet e aggiunto al progetto.
Questo filtro controlla ogni richiesta inviata all'applicazione e la pulisce da una potenziale iniezione.
domande di intervista java j2ee per 10 anni di esperienza
Quando un file external.jar viene aggiunto al progetto, deve essere descritto anche nel file web.xml:
XSSFilter com.cj.xss.XSSFilter Un'altra possibile soluzione è la libreria ESAPI. La libreria ESAPI è compatibile con molti linguaggi di programmazione. Puoi trovare librerie ESAPI per linguaggi di programmazione Java e PHP. È una libreria open source e gratuita, che aiuta a controllare la sicurezza dell'applicazione.
Cheat Sheets XSS
I fogli cheat XSS possono essere molto utili per la prevenzione del cross site scripting. È una linea guida per gli sviluppatori su come prevenire gli attacchi XSS. Le regole sono molto utili e non dovrebbero essere dimenticate durante lo sviluppo. Cheat Sheets XSS possono essere trovati nelle comunità Internet come OWASP (The Open Web Application Security Project).
Diversi tipi di cheat sheet:
- Cheat sheet sulla prevenzione XSS
- Cheat Sheet di DOM XSS
- Foglio illustrativo per l'evasione del filtro XSS
La linea guida principale sarebbe XSS Prevention Cheat Sheet, in quanto fornisce regole comuni per la prevenzione degli attacchi XSS. Se seguissi le regole del Cheat Sheet XSS di DOM e del Cheat Sheet di Evasione del Filtro XSS, dovresti comunque seguire il Cheat Sheet di XSS Prevention.
Come affermato, XSS Prevention Cheat Sheet può essere trovato nella comunità OWASP. Questo Cheat Sheet ci fornisce un elenco di regole che ci aiuterebbero a ridurre i rischi di possibili attacchi XSS. Non sono solo le regole di codifica, ma anche le vulnerabilità di sicurezza su una base di prevenzione.
Alcune delle regole includono:
- I dati non attendibili non devono essere inseriti.
- HTML deve essere sottoposto a escape prima di inserire dati non attendibili.
- L'attributo deve essere sottoposto a escape prima di inserire dati non attendibili, ecc.
Quindi, Cheat Sheet può essere molto utile per prevenire questo tipo di attacchi.
Conclusione
Durante il test, si consiglia vivamente di valutare i rischi che portano a possibili attacchi XSS. L'attacco XSS può influenzare le applicazioni web, che sembrano anch'esse sicure.
È considerato uno degli attacchi più dannosi e rischiosi. Quindi, non dobbiamo dimenticare questo tipo di test. Durante l'esecuzione di test su XSS, è importante avere una buona conoscenza di questo attacco. E questa è la base per analizzare correttamente i risultati dei test e scegliere gli strumenti di test appropriati.
Sei un tester che si è occupato di attacchi XSS di cross site scripting? Hai qualche fatto interessante sugli attacchi XSS che potrebbero aiutare anche i nostri lettori? Sentiti libero di condividere le tue esperienze con noi nella sezione commenti qui sotto !!
Lettura consigliata
- Tutorial approfonditi su Eclipse per principianti
- Tutorial sull'iniezione di HTML: tipi e prevenzione con esempi
- Esercitazione sul test di SQL Injection (esempio e prevenzione di attacchi di SQL injection)
- Che cos'è l'attacco DDoS e come si esegue un attacco DDoS?
- Selenium Grid Tutorial: configurazione ed esempio di test cross browser
- Tutorial Java Reflection con esempi
- Tutorial SVN: gestione del codice sorgente mediante Subversion
- Tutorial Python DateTime con esempi
