Ajax (Asynchronous JavaScript e XML) è un insieme di tecnologie usate per estendere la funzionalità del browser e per permettere agli utenti e alle applicazioni di accedere a contenuti, di condividerli e di pubblicarli.
Nonostante questa tecnica di sviluppo Web non sia nulla di particolarmente innovativo, è vista come parte della seconda generazione di Web service, che come tutti i servizi Internet-based ha insite problematiche inerenti la sicurezza. Vediamo in dettaglio come funziona Ajax, come se ne può trarre vantaggio e cosa si può fare per impedire un attacco.
Come opera Ajax
Le applicazioni Ajax sono eseguite principalmente sulla macchina dell’utente e scambiano continuativamente piccole quantità di dati con il server, così non deve essere ricaricata l’intera pagina Web. Ciò aggiunge funzionalità alla pagina stessa e la fa sembrare più reattiva: un esempio è il controllo ortografico di Gmail che opera in tempo reale.
Ajax usa tecnologie come Cascading Style Sheets (CSS), Document Object Model (DOM) e Dynamic HTML, ma il driver principale è l’oggetto XMLHttpRequest di Javascript, che può essere configurato per funzionare in background in modo asincrono e venire attivato dall’utente quando preme determinati tasti, da un timer o da altri eventi simili. Ciò significa che il codice Javascript su una pagina Web può collegare al server Web indipendentemente dall’utente e avviare il pull dei contenuti cross-domain.
Come i cracker sfruttano Ajax
Le applicazioni Web usano tipicamente la stessa policy di origine, che le obbliga a collegarsi soltanto al server che ha fornito la pagina base. Tuttavia, questo non avviene con gli script Ajax e quindi gli script maligni potrebbero carpire dati memorizzati nei cookie o accedere direttamente al server originale. Per esempio, un attacker potrebbe sfruttare segretamente le vulnerabilità dello scripting cross-site, perché l’applicazione può effettuare richieste multiple in background mentre agli occhi dell’utente continua a operare regolarmente.
Prevenire le attività di Ajax
Se usate Ajax all’interno in una vostra applicazione Web, potenzialmente ogni funzione dal lato del server eappresenta un obiettivo supplementare per gli attacker. Di seguito vi proponiamo cinque step che potrete seguire per arginare le potenziali minacce:
- Anzitutto applicate la classica disciplina di non fidarsi mai del client, in modo che ogni controllo di sicurezza sia implementato sul server e mai affidato all’utente.
- Create un’applicazione priva di ambiguità. Riducendo e facilitando ogni chiamata Ajax renderete più semplice la valutazione di tutti i possibili tipi di richieste che possono essere generate da una pagina o da un’applicazione durante i test di sicurezza.
- Documentate e spiegate come l’applicazione comunica con il server e gestisce le risposte che da questo riceve. Realizzate tali richieste come collegamenti SSL per informazioni sensibili.
- Completare i test di sicurezza prima di portare l’applicazione on line, con particolare enfasi sul controllo dell’accesso e sulla convalida degli input.
- Per avere un aiuto nello sviluppo di applicazioni Ajax sicure, visitate il sito Web Application Security Project.
Ricordatevi che, siccome il modello di sicurezza di XMLHttpRequest non può avere un lungo periodo di vita nelle applicazioni Web 2.0, è importante che siate sempre aggiornati sulle soluzioni emergenti che potrebbero risolvere il problema del cross-domain. Per esempio, la richiesta JSON (JavaScript Object Notation) non permette lo scambio di cookie durante il suo funzionamento, mentre Flex ActionScript di Adobe consente il controllo lato server di quei siti che possono attivare un cross-domain con il server stesso.