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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6.10 Denial of Service<br />

CAPITOLO VI - Gli attacchi e il progetto OWASP<br />

Come tutti i servizi <strong>di</strong> rete, anche le applicazioni web, soffrono degli attacchi <strong>di</strong> tipo DoS<br />

(Denial of Service) in cui, attraverso l’esaurimento delle risorse del sistema, si satura la sua<br />

capacità fino a determinarne il blocco temporaneo. In questa situazione i sistemi <strong>di</strong>ventano<br />

inutilizzabili per gli utenti legittimamente attivi.<br />

Una grossa quantità <strong>di</strong> richieste HTTP è un primo e semplice esempio <strong>di</strong> come poter saturare le<br />

risorse <strong>di</strong> un server web, bloccando l’accesso per tutti gli altri utenti. Pratiche <strong>di</strong> questo tipo<br />

sono sempre più frequenti durante i net strike e, purtroppo, come meccanismo d’estorsione<br />

verso siti che traggono profitto dalla pubblicità sul numero <strong>di</strong> visitatori.<br />

Sebbene particolari configurazioni possono mitigare il problema, questa problematica è<br />

comunque impossibile da risolvere. Si può attenuare un attacco tramite potenziamenti<br />

dell’hardware, attraverso l’uso <strong>di</strong> load balancing e instaurando accor<strong>di</strong> con i fornitori del<br />

servizio internet ma non è possibile escludere il problema: l’aggressore potrebbe potenziarsi a<br />

sua volta oppure attaccare risorse <strong>di</strong>verse (ampiezza <strong>di</strong> banda, numero <strong>di</strong> connessioni al<br />

database, spazio su <strong>di</strong>sco, utilizzo <strong>della</strong> CPU e <strong>della</strong> memoria e così via).<br />

Come regola generale conviene limitare, a livello software, il massimo numero <strong>di</strong> risorse<br />

allocate per un singolo utente.<br />

Per gli utenti autenticati, è possibile fissare <strong>una</strong> quota in modo da poter limitare il carico<br />

massimo che un utente può applicare al sistema. In particolare, dovrebbe essere considerata la<br />

possibilità <strong>di</strong> gestire <strong>una</strong> richiesta ad utente per volta, sincronizzandosi con le sessioni degli<br />

utenti. E’ utile bloccare ogni HTTP request che viene processata da un utente nel momento in<br />

cui la richiesta <strong>di</strong> un altro utente arriva al sistema.<br />

Per gli utenti non autenticati, bisogna evitare tutti gli accessi al DB o ad altre applicazioni avide<br />

<strong>di</strong> risorse ritenute superflue. E’ consigliabile progettare l’architettura dei flussi del sito, in modo<br />

tale che un utente non autenticato non possa richiamare ness<strong>una</strong> <strong>di</strong> queste funzioni onerose dal<br />

punto <strong>di</strong> vista dell’effort sulle risorse dell’<strong>applicazione</strong>. Si potrebbe pensare <strong>di</strong> mantenere in<br />

<strong>una</strong> cache il contenuto dei dati ricevuti da utenti non autenticati invece <strong>di</strong> eseguire delle query<br />

<strong>di</strong>rettamente sul DB. Inoltre sarebbe necessario controllare le modalità con cui vengono gestiti<br />

gli errori, in modo tale da non inficiare le altre funzioni dell’<strong>applicazione</strong>.<br />

147

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

Saved successfully!

Ooh no, something went wrong!