Cos'è ?
è la quintessenza del test per il cross-site scripting (XSS), perché è veloce da scrivere e funziona in ogni browser.
Testing per XSS
Se potete incollare questo in una casella di testo su un sito (come un campo per i commenti), e questo fa apparire una casella di avviso sullo schermo di un altro utente, allora quel sito è vulnerabile a XSS, perché sapete che potete eseguire Javascript come se foste quell'altro utente - rubando le credenziali, falsificando la loro identità, rubando dati, facendo phishing su di loro o su un altro account utente, o anche solo facendo rimbalzare il vostro attacco su un altro obiettivo. XSS è incredibilmente brutto, e anche più facile da controllare e correggere di SQL injection; tutti dovrebbero sapere come farlo, ed ecco come.
Per automatizzare i test per XSS (e altre vulnerabilità) su tutto il vostro sito, ci sono strumenti di fuzzing sia open source che commerciali (come Burp Suite), che, naturalmente, faranno un lavoro molto più completo di quello che potete fare semplicemente incollando ``, ma questo è ancora un ottimo primo test.
Fixing XSS
Fixing XSS può essere facile nella maggior parte dei linguaggi: basta usare una libreria che incorpori le raccomandazioni OWASP per la sanificazione dell'HTML prima di memorizzare l'input in entrata, non fidato, nel database (si dovrebbe anche sanificare per gli attacchi SQL injection - questi possono essere ancora più catastrofici), o prima di visualizzare qualsiasi testo ricevuto dal server sullo schermo. Cercate sul web la protezione da SQL injection per il vostro linguaggio di programmazione. (Spesso la prevenzione dell'iniezione SQL sarà incorporata nella vostra libreria di database.)
OWASP ha una guida di riferimento per la prevenzione e i test XSS qui.
Testing for Reflected Cross site scripting (OTG-INPVAL-001)
Non lasciatevi dissuadere se questo sembra troppo impegnativo o richiede tempo; è assolutamente da fare e di solito richiede solo una riga in più di codice. Basta cercare nelle librerie web per il nome del vostro linguaggio o framework che sanitizzerà i dati da XSS.
Un rapido esempio usando il pacchetto XSS per node.js:
// Sanitizzare il testo in entrata, non fidato, semplicemente usando xss():
xss = require('xss');
// successivamente, dopo aver ricevuto l'input dall'utente
// (non dimenticare l'iniezione SQL prima di scrivere nel DB!)
var clean_string = xss(untrusted_string);
store_it_somewhere(clean_string);
Questo è tutto quello che c'è da fare.
Ma, se vedi nel tuo database, allora qualcuno stava testando la tua applicazione per le vulnerabilità! Se non sei stato tu, allora potresti offrire un bug bounty e vedere se qualcuno trova qualcosa. :)