2013-02-28 18 views
5

Sto lavorando a un'applicazione web/mobile utilizzando AJAX. L'applicazione ha 4 pagine: la pagina di accesso e 3 pagine protette visualizzate solo agli utenti registrati.AJAX: Struttura applicazione singola/sicurezza

Sto pianificando di utilizzare il modello di applicazione per pagina singola, quindi tutte le 4 pagine verranno caricate subito, ciascuna all'interno del proprio ID DIV, e solo quella di accesso sarà inizialmente visibile.

Una volta che l'utente inserisce il suo utente/passaggio, creo un XMLHttpRequest e dialogare con uno script PHP interna, che a sua volta utilizza istruzioni preparate per controllare se l'utente/passaggio esiste nel database, e restituisce un vero o falso a il XMLHttpRequest.

Se il risultato è vero, renderò visibile il DIV protetto e caricherò i dati necessari dal server, creando un altro XMLHttpRequest e passando attraverso un altro script PHP per interfacciarlo con il database. Questo passaggio viene ripetuto quando l'utente naviga tra le altre pagine protette. Sto anche pensando di implementare i cookie per mantenere gli utenti loggati, sempre usando XMLHttpRequest/script PHP interno.

Sotto c'è un'immagine che descrive il processo.

Domande:

  • Questo struttura guardano OK? Eventuali problemi che potrebbero sorgere non lo sto prevedendo?
  • La struttura è sicura? In che modo posso indurirlo ulteriormente?

enter image description here

+0

JPEG non è il formato più adatto per salvare tali diagrammi in. BTW, stai usando HTTPS, non è vero? –

+0

Sì, sto utilizzando HTTPS negli script sul lato server di PHP. –

risposta

4

Tale struttura è bene finché si assicura che ogni richiesta di dati è protetta dal sistema di login, per evitare che i dati che servono agli utenti non autenticati.

Inoltre, è necessario assicurarsi che quando l'utente si disconnette, si scaricano tutti i dati dal DOM. Ciò potrebbe facilmente essere fatto forzando un aggiornamento della pagina window.location.reload() o rimuovendo manualmente tutti i nodi DOM che contengono dati e sovrascrivendo qualsiasi variabile. Considera un utente che utilizza la tua app, quindi effettua il logout, quindi un altro utente utilizza lo stesso dispositivo. Se non scarichi i dati durante la disconnessione, il secondo utente, anche se non autenticato, potrebbe aprire qualsiasi strumento DOM come Firebug/Chrome Dev Tools e visualizzare i dati riservati dell'ultimo utente.

Non dimenticare di prestare attenzione alla sicurezza generale delle app Web in termini di SQLi, XSS (incluso XSS basato su DOM - non solo XSS riflettente/memorizzato) e sicurezza delle sessioni (session hijacking ecc. Ecc.).

+0

Sto prestando attenzione a SQLi e XSS, ma ho dimenticato di svuotare i dati dal DOM e dal DOM XXS basato. Buoni promemoria, grazie. –

Problemi correlati