Vulnerabilità XSS – gli errori di sicureza più comuni
Gli attacchi XSS (cross-site scripting) sono i più insidiosi ed anche i più comuni.
Che si usi PHP oppure qualsiasi altro linguaggio per sviluppare un sito web dinamico, bisogna stare particolarmente attenti a come si gestiscono i valori che ci arrivano tramite POST e GET.
Per XSS si intende una tecnica che, inviando dei valori particolari alla pagina web, è possibile istruire la pagina a fare cose non previste.
In questo modo è possibile superare le protezioni delle pagine ed eseguire qualsiasi azione all’insaputa di chi sta guardando la pagina.
Uno degli ultimi casi ha coinvolto myspace. Tramite XSS è stato possibile creare un worm che si autoreplicava nella pagine di chi visitava il profilo di un utente infettato.
La tecnica utilizzata era molto sofisticata perché tramite XSS, il worm riusciva a recuperare la session dell’utente loggato e, utilizzando le funzioni di myspace, installarsi automaticamente nel profilo dell’utente.
Uno degli errori più comuni che aprono le porte ad attacchi XSS è una scarsa cura dei parametri POST e GET.
Le regole fondamentali per un buon utilizzo dei parametri che riceviamo ad uno richiesta si possono elencare in:
- se il campo arriva solo da un form allora utilizza sempre e solo $_POST (mai $_GET oppure $_REQUEST) (attenzione è possibile creare un form che esegue una action GET)
- se il campo attiva solo tramite url allora utilizza sempre e solo $_GET (stesso ragionamento di sopra)
- se il campo può contenere solo un valore numerico allora normalizzalo tramite “intval” oppure “floatval”
- se devi visualizzare il campo nella pagina HTML, utilizza sempre “htmlspecialchars” in modo da codificare eventuali caratteri malevoli
- se utilizzi il valore del campo per comporre una query, quando stringa utilizzare sempre addslashes mentre se numero valgono le regole esposte sopra (p.e. intval)
- se il campo è una stringa su singola linea meglio togliere eventuali “\n” oppure “\r” con str_replace (per evitare un injection quando si invia una mail con questi valori)
Scritto il: April 17th, 2009 in Uncategorized.
Commenti: nessuno






Write a comment