Pubblicato da: poyblog su: aprile 14, 2010
Come difendersi dalla tipologia di attacchi rappresentati nell’articolo: http://poyblog.wordpress.com/2010/04/14/sicurezza-del-linguaggio-javascript-metodologie-di-attacco/ ?
Dal punto di vista dell’utente finale le raccomandazioni più importanti sono:
Dal punto di vista dello sviluppatore è necessario validare tutte le variabili in input:
Per generare del buon codice Javascript è necessario gestire in modo molto accurato gli errori, e di conseguenza adottare delle valide metodologie di debugging.
Un costrutto molto efficace in questo caso è il classico blocco try-catch-finally. Con questo metodo il codice eseguito sta nella sezione try, mentre le eccezioni sollevate vengono gestire dalle sezioni catch. La sezione finally viene sempre eseguita, sia che l’esecuzione termini correttamente sia nel caso in cui si fermi anzitempo; solitamente questo blocco di codice serve per liberare risorse acquisite. Di seguito ecco un esempio di try-cath-finally:
<script type=”text/javascript”>
<!–
try{
document.write(10/0) ;
}
catch(e){
alert(e.message);
}
finally{
document.write(“questo codice viene eseguito comunque.”);
}
–>
</script>
Uno dei metodi migliori per validare i dati immessi dagli utenti è quello di utilizzare le espressioni regolari. Per chi volesse approfondire l’argomento suggerisco: http://it.wikipedia.org/wiki/Espressione_regolare
Sfruttando a dovere la potenza di questo strumento è possibile ridurre al minimo la possibilità di attacchi dato che tutte le stringhe in input sono controllate.
Comunque anche con l’ausilio delle espressioni regolari gli errori di programmazione exploitabili sono sempre possibili. Vale la pena utilizzare dei validi programmi di debug per ridurre al minimo queste probabilità. Ecco due dei maggiori strumenti di controllo:
1 | Nuova serie dedicata alla sicurezza del codice sul blog di Cesare « GiBiLog
maggio 4, 2010 a 10:05 pm
[...] metodologie di attacco via JavaScript, e un altro dedicato invece alle modalità principali di difesa da questi attacchi (sia da parte dell’utente che da parte del [...]