2013-02-28 4 views
5

Ich arbeite an einer Web/Mobile App mit AJAX. Die Anwendung hat 4 Seiten: die Login-Seite und 3 geschützte Seiten werden nur angemeldeten Benutzern angezeigt.AJAX: Einseitige Anwendungsstruktur/Sicherheit

Ich plane, das Single-Page-Application-Muster zu verwenden, so dass alle 4 Seiten sofort geladen werden, jeder in seiner eigenen DIV-ID, und nur der Login-Name wird anfänglich sichtbar sein.

Sobald der Benutzer seinen Benutzer/Ausweis eingibt, erzeuge ich ein XMLHttpRequest und kommuniziere mit einem internen PHP-Skript, das wiederum vorbereitete Anweisungen verwendet, um zu überprüfen, ob der Benutzer/pass in der Datenbank vorhanden ist, und true oder false zurückgibt die XMLHttpRequest.

Wenn das Ergebnis wahr ist, mache ich dann das geschützte DIV sichtbar und lade die notwendigen Daten vom Server, erstelle ein weiteres XMLHttpRequest und gehe durch ein anderes PHP-Skript zur Schnittstelle mit der Datenbank. Dieser Schritt wird wiederholt, wenn der Benutzer zwischen den anderen geschützten Seiten navigiert. Ich plane auch, Cookies zu implementieren, um Benutzer eingeloggt zu halten, wieder mit XMLHttpRequest/internem PHP-Skript.

Unten ist ein Bild, das den Prozess beschreibt.

Fragen:

  • Sieht diese Struktur in Ordnung? Irgendwelche Probleme, die auftreten könnten, sehe ich nicht voraus?
  • Ist die Struktur sicher? Irgendwie kann ich es weiter verhärten?

enter image description here

+0

JPEG ist nicht das am besten geeignete Format, um solche Diagramme zu speichern. BTW, du verwendest HTTPS, nicht wahr? –

+0

Ja, ich verwende HTTPS auf den serverseitigen PHP-Skripten. –

Antwort

4

Diese Struktur ist in Ordnung, solange Sie jede Anforderung von Daten sicherzustellen, dass durch das Login-System geschützt ist, zu verhindern, dass Daten nicht authentifizierte Benutzer dienen.

Auch müssen Sie sicherstellen, dass wenn der Benutzer abmeldet, Sie alle Daten aus dem DOM löschen. Dies könnte leicht dadurch erreicht werden, dass eine Seitenaktualisierung erzwungen wird window.location.reload() oder indem manuell alle DOM-Knoten entfernt werden, die Daten enthalten und alle Variablen überschreiben. Stellen Sie sich einen Benutzer vor, der Ihre App verwendet und sich anschließend abmeldet. Anschließend wird ein anderer Benutzer das gleiche Gerät verwenden. Wenn Sie beim Abmelden keine Daten löschen, kann der zweite Benutzer, der nicht authentifiziert wurde, ein beliebiges DOM-Tool wie Firebug/Chrome Dev Tools öffnen und die sensiblen Daten des letzten Benutzers anzeigen.

Vergessen Sie nicht, allgemeine Web-App-Sicherheit in Bezug auf SQLi, XSS (einschließlich DOM-basierte XSS - nicht nur reflektierende/gespeicherte XSS) und Sitzungssicherheit (Session Hijacking usw.) zu beachten.

+0

Ich achte auf SQLi und XSS, aber ich habe vergessen, Daten aus dem DOM und DOM basierend XXS zu löschen. Gute Erinnerungen, danke. –

Verwandte Themen