02.06.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!