AJAX: basi di sicurezza
Martedì 18 Luglio 2006 - 10:00
di Francesco Caccavella

Qualche giorno fa un bell'articolo pubblicato su SecurityFocus, di cui forniremo abbiamo fornito una traduzione fra alcuni giorni sul nostro canale dedicato alla sicurezza informatica, ha riproposto il tema della sicurezza nella progettazione di applicazioni Web, in particolare di applicazioni scritte in AJAX.
Dopo aver spiegato cosa è AJAX, gli autori passano subito al tema dell’articolo: "AJAX non introduce intrinsecamente nuove vulnerabilità nel mondo delle applicazioni Web" e le applicazioni scritte con questa tecnologia "hanno di fronte le stesse problematiche delle applicazioni Web classiche". Ma "non sono state messe a punto buone pratiche comuni" che possono condurre a brutte sorprese. AJAX non è insicuro di per sé, ma il cambiamento di modello di programmazione potrebbe favorire delle pessime, dal punto di vista della sicurezza, abitudini. E allora ecco alcune "zone" su cui concentrare l'attenzione per quanto riguarda la sicurezza.
Controlli di sicurezza lato client: poiché il ruolo del client, nelle applicazioni AJAX, è molto più preponderante rispetto ad un modello classico, qualcuno potrebbe essere portato a spostare su quel lato della comunicazione i controlli di sicurezza. Male. Dal lato del client è molto più facile forzare un'applicazione: "i controlli di sicurezza devono essere sempre implementati lato server o rinforzati sul server".
Aumento della superficie di attacco: "AJAX aumenta inevitabilmente la complessità del sistema" poiché, per favorire dinamicità e reattività, aumenta e moltiplica le comunicazioni con il server. Ogni nuova funzione, e ogni nuova interazione, può essere un punto di attacco al sistema: "è come dover programmare la sicurezza di una casa con dieci porte in confronto con una con una porta sola".
Meno “spazio” fra utenti e servizi: con l'uso di Ajax c'è il rischio di scardinare il modello three-tier poiché il ruolo del middleware, ossia dell'applicazione che gestisce il controllo e la lettura dei dati, viene sempre meno. Utilizzando JavaScript e XML e un modello SOA l'untente finale viene messo direttamente di fronte ai web service, ossia ai dati.
Nuove possibilità di Cross Site Scripting: è una delle cose che abbiamo discusso già in un altro post: una cattiva programmazione, unita ad un hack del modello di protezione del browser e facilitata dall'interazione asincrona di AJAX (che rende invisibile all'utente lo scambio di dati con il server) è una combinazione con cui i piccoli cracker vanno a nozze.
Categoria: Sicurezza | Permalink
Commenti
1
la leggenda metropolitana dell’insicurezza di AJAX mi ha fatto abbastanza ridere…
chiunque sappia minimamente cosa è AJAX sa che i problemi non derivano da quello.# - postato da Andrea Paiola - 18 Luglio 2006 - 18:21
2
Appunto, chi sa “minimamente” cosa è AJAX pensa che i problemi non derivino da “quello” (quello chi, poi?), chi invece sa “massimamente” cosa è AJAX , come i due CISSP che hanno scritto l’articolo, ha qualcosa in più da dire.
Io credo che, poiché le applicazioni le fanno le persone e la tecnologia può essere usata bene o male, il vero problema non è AJAX, ma l’atteggiamento di chi, ad ogni uscita di una notizia del genere, fa spallucce e ride.
Per farla breve: con l’introduzione di AJAX è cambiato il peso della programmazione client/server a favore della prima o no? Demandare molto al client, e poco al server, pone nuovi problemi di sicurezza o no?
# - postato da Francesco - 18 Luglio 2006 - 18:47
3
“quello” = AJAX
comunque non si può demandare molto al client…
e nell’ottica della degrabailità il problema non si pone# - postato da Andrea Paiola - 19 Luglio 2006 - 00:35
4
Sviluppo programmi ad alto livello di sicurezza come quelli delle banche. Alcune delle pagine contengono chiamate Ajax (PHP). In ogni funzione richiesta, prima di fare qualunque cosa, tutte le variabili di autenticazione vengono controllate. Se l’utente non è loggato, non si va avanti.
Tutto questo perchè problemi di sicurezza con Ajax ci possono essere, come per qualunque linguaggio lato server, già che i valori vengono passati con REQUEST(GET), e la cosa peggiora se c’è di mezzo un database. Dobbiamo sempre evitare le SQL Injection.
Ajax è una ferramenta interessantissima, ma che può causare danni.# - postato da Ivan Gasparetto - 01 Agosto 2006 - 15:05







