Sicurezza AJAX

Javascript asincrono e XML (AJAX) è una delle ultime tecniche utilizzate per sviluppare applicazioni web in modo da offrire una ricca esperienza utente. Poiché si tratta di una nuova tecnologia, ci sono molti problemi di sicurezza che devono ancora essere risolti e di seguito sono riportati i pochi problemi di sicurezza in AJAX.

  • La superficie di attacco è maggiore poiché ci sono più input da proteggere.

  • Espone anche le funzioni interne delle applicazioni.

  • Mancata protezione delle informazioni e delle sessioni di autenticazione.

  • Esiste una linea molto stretta tra lato client e lato server, quindi ci sono possibilità di commettere errori di sicurezza.

Esempio

Ecco un esempio per AJAX Security:

Nel 2006, un worm ha infettato il servizio di posta Yahoo utilizzando XSS e AJAX che ha sfruttato una vulnerabilità nella gestione degli eventi onload di Yahoo Mail. All'apertura di un'e-mail infetta, il worm ha eseguito il proprio JavaScript, inviando una copia a tutti i contatti Yahoo dell'utente infetto.

Mani su

Step 1- Dobbiamo provare ad aggiungere più premi al tuo set di premi consentito utilizzando l'iniezione XML. Di seguito l'istantanea dello scenario.

Step 2- Assicurati di intercettare sia la richiesta che la risposta utilizzando Burp Suite. Impostazioni uguali a quelle mostrate di seguito.

Step 3- Immettere il numero di conto come indicato nello scenario. Saremo in grado di ottenere un elenco di tutti i premi per i quali siamo idonei. Abbiamo diritto a 3 premi su 5.

Step 4- Ora facciamo clic su "Invia" e vediamo cosa otteniamo nell'XML di risposta. Come mostrato di seguito, i tre premi che siamo idonei ci vengono trasmessi come XML.

Step 5 - Ora modifichiamo quegli XML e aggiungiamo anche gli altri due premi.

Step 6- Ora tutti i premi verranno visualizzati all'utente affinché possa selezionarli. Seleziona quelli che abbiamo aggiunto e fai clic su "Invia".

Step 7 - Viene visualizzato il seguente messaggio che dice "* Congratulazioni. Hai completato con successo questa lezione."

Meccanismi preventivi

Lato client -

  • Usa .innerText invece di .innerHtml.
  • Non utilizzare eval.
  • Non fare affidamento sulla logica del client per la sicurezza.
  • Evita di scrivere codice di serializzazione.
  • Evita di creare XML in modo dinamico.
  • Non trasmettere mai segreti al cliente.
  • Non eseguire la crittografia nel codice lato client.
  • Non eseguire la logica che influisce sulla sicurezza sul lato client.

Lato server -

  • Usa la protezione CSRF.
  • Evita di scrivere codice di serializzazione.
  • I servizi possono essere chiamati direttamente dagli utenti.
  • Evita di costruire XML a mano, usa il framework.
  • Evita di creare JSON a mano, usa un framework esistente.