AJAX: basi di sicurezza

4 agosto 2006

Questa è la traduzione dell’articolo Ajax security basics di Jaswinder S. Hayre e Jayasankar Kelath pubblicato originariamente su SecurityFocus il 22 giugno 2006. La traduzione viene qui presentata con il consenso dell’editore.

Introduzione

Nell’ultimo anno le tecnologie basate su AJAX hanno ottenuto grande visibilità a causa della loro natura “interattiva”. Google Suggest e Google Maps sono alcuni dei servizi più noti che fanno uso di AJAX. Le aziende stanno pensando a come poter sfruttare queste tecnologie, gli sviluppatori Web stanno cercando di apprenderne il funzionamento, i professionisti di sicurezza stanno pensando a come poterle rendere più sicure e gli addetti alle verifiche di sicurezza stanno pensando a come violarle. Ogni tecnologia che migliora lo scambio dati con i server, che produce transizioni più fluide fra pagine e rende le applicazioni web più ricche trova facilmente grande visibilità.

AJAX è considerato un grande passo in avanti verso il tanto sbandierato “Web 2.0″. Il proposito di questo articolo è di introdurre alcune implicazioni di sicurezza riguardanti l’uso di queste tecnologie. Sebbene le applicazioni basate su AJAX possono essere molto più difficili da testare, la comunità dei professionisti di sicurezza ha già dalla sua gli strumenti e gli approcci di cui ha bisogno. Gli autori verificheranno se la necessità, oggi tanto richiesta, di dire addio al refresh completo delle pagine Web imponga anche di dare il benvenuto a nuovi problemi di sicurezza. Inizieremo quindi con una breve panoramica delle tecnologie che si celano dietro AJAX seguita da un’analisi delle implicazioni di sicurezza che tale tecnologia porta con sé.

AJAX: nozioni fondamentali

Le classiche applicazioni web lavorano su un modello sincrono: ad una richiesta dal Web si fa seguire una risposta che provoca alcune azioni sul livello di presentazione dell’applicazione. Per esempio: il clic su un link o l’invio di un modulo eseguono una richiesta al Web server con i relativi parametri. Il tradizionale comportamento “click and wait” (‘clicca e aspetta’) limita l’interattività delle applicazioni. Questo problema è stato mitigato dall’uso delle tecnologie AJAX (Asychronous Javascript and XML). Nell’ambito di questo articolo definiremo AJAX come il metodo con il quale vengono eseguite chiamate asincrone al Web server senza causare un aggiornamento completo della pagina Web. Questa interazione è resa possibile da tre componenti differenti: un linguaggio di scripting lato client, l’oggetto XmlHttpRequest (XHR) object e l’XML.

Vediamo in breve questi tre componenti. Il linguaggio di scripting lato client è utilizzato per inizializzare le chiamate al Web server e successivamente, in risposta alla richiesta, è utilizzato per accedere e aggiornare il DOM all’interno del browser. La scelta più diffusa lato client è JavaScript poiché ampiamente integrato nei browser moderni. Il secondo componente  è l’oggetto XHR: il cuore di tutto. Linguaggi come JavaScript utilizzano l’oggetto XHR per inviare richieste al Web server “dietro le quinte” utilizzando l’HTTP come mezzo di trasporto. In ultimo abbiamo una terza componente, il cui uso non è tuttavia strettamente necessario: XML, ossia il formato con cui vengono scambiati i dati.

In molti siti si fa uso di JSON (JavaScript Object Notation) al posto di XML poiché permette un più semplice recupero dei dati e un minore eccesso di codice. Usare JavaScript per accedere a dati JSON è semplificato dall’uso della funzione eval(). Anche XPath può essere utilizzato per accedere e restituire XML. Ancora, ci sono diversi siti basati su AJAX che non utilizzano né XML né JSON ma inviano pezzi di vecchio codice HTML da includere dinamicamente nella pagina.

Se vuoi aggiornamenti su AJAX: basi di sicurezza inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su AJAX: basi di sicurezza

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy