analisi e gestione della sicurezza di una complessa applicazione ...
analisi e gestione della sicurezza di una complessa applicazione ...
analisi e gestione della sicurezza di una complessa applicazione ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
CAPITOLO VI - Gli attacchi e il progetto OWASP<br />
cui specificare tutto quello che l’<strong>applicazione</strong> può accettare; questa tecnica <strong>di</strong>fferisce dalla<br />
duale blacklist, in cui invece viene specificato tutto quello che non deve essere accettato. Per<br />
valori "non ammissibili" inten<strong>di</strong>amo degli input che possono generare errori anche a livello<br />
funzionale oltre che strettamente legati alla <strong>sicurezza</strong>.<br />
La prima soluzione è sicuramente preferibile in quanto spesso non è possibile definire in<br />
maniera precisa cosa scartare; a questo si aggiunge la naturale evoluzione del software che<br />
subisce perio<strong>di</strong>camente mo<strong>di</strong>fiche e reingegnerizzazioni. Nel caso in cui il controllo sui valori<br />
in ingresso non sia ben implementato, si correrà il rischio <strong>di</strong> esporre l’<strong>applicazione</strong> ad <strong>una</strong> serie<br />
<strong>di</strong> attacchi noti che vanno dal classico SQL injection, al cross site scripting, buffer overflow,<br />
format string, e così via.<br />
6.2.1 SQL Injection<br />
SQL Injection consiste in un attacco informatico che sfrutta la cattiva abitu<strong>di</strong>ne <strong>di</strong> concatenare<br />
le stringhe destinate ad un database server. La concatenazione delle stringhe SQL viene<br />
solitamente associata a problemi <strong>di</strong> <strong>sicurezza</strong>, ma affligge anche performance e provoca subdoli<br />
errori <strong>di</strong> runtime in relazione ai separatori numerici e delle date.<br />
Pren<strong>di</strong>amo ad esempio la seguente stringa che verrà eseguita come query su un database:<br />
"select * from users where name like ‘ " + TextBox1.Text + "%’ "<br />
Un utente del web che dovesse cercare "Angelo" causerebbe l’esecuzione <strong>della</strong> query:<br />
"select * from users where name like ‘Angelo%’ "<br />
Lo sviluppatore web non ha purtroppo validato il contenuto <strong>della</strong> TextBox e un hacker<br />
potrebbe sfruttare questa vulnerabilità semplicemente inserendo nella casella <strong>di</strong> testo la stringa:<br />
" ‘ or ‘a’ like ‘a "<br />
Lo statement SQL risultante dalla concatenazione sarebbe il seguente:<br />
116