gopeter
Lieutenant
- Registriert
- Okt. 2006
- Beiträge
- 576
Hi zusammen,
ich entwickle gerade eine Art Agentursoftware als Webanwendung (Zeiterfassung, Todo-Management, Newsletter, etc pp). Da spielt die Sicherheitsfrage natürlich eine große Rolle. Ich hab mich die letzten zwei Tage auf unzähligen Seiten über Session Sicherheit (und Sicherheit im allgemein) eingelesen, bin mir aber noch nicht wirklich sicher, ob ich das jetzt richtig aufgenommen habe.
Der Login wird über ein klassisches Affenformular realisiert:
Die Seite besteht nur aus einer einzigen index.php, der Rest wird über Ajax reingeladen.
Um Session Fixation, Hijacking und sonstigen Kram auszuschließen, habe ich folgende Mechanismen verbaut:
1. in der index.php werden folgende Werte festgelegt:
Frage dazu: müssen diese Werte bei jeder Seite, die geladen wird (z.b. "zeiterfassung.php") eingebunden werden? Ich hab hier und da unterschiedliche Meinungen gehört, bin momentan aber noch der Meinung, dass es ausreicht, diese Werte in der index.php festzulegen. Oder doch gleich über eine php.ini?
2. nach dem Einloggen wird die Session ID neu erstellt.
Das geschieht mit Hilfe von
Frage dazu: Sollte die ID nach jeder Aktion neu generiert werden? Wenn ich zum Beispiel von der Userverwaltung zur Statistik wechsle, etc?
3. Die Applikation wird nur über https:// erreichbar sein.
Ich glaube mit diesen drei Maßnahmen sollte die App relativ gut abgesichert sein. Oder? Habe auch gelesen, Benutzer über eine Session-Datenbank an ihre IPs zu binden etc. Da das Ding aber wie gesagt eine Agentursoftware darstellt und im Büro oftmals mehrere Leute dieselbe IP haben, wäre dies ein bisschen unsinnig. Hat sonst noch wer Vorschläge?
Ansonsten wurden selbstverständlich gängige Methoden eingehalten, wie z.B. Datenbankaufbau über PDO und Prepared Statements, verschlüsselte Passwörter, etc pp...
ich entwickle gerade eine Art Agentursoftware als Webanwendung (Zeiterfassung, Todo-Management, Newsletter, etc pp). Da spielt die Sicherheitsfrage natürlich eine große Rolle. Ich hab mich die letzten zwei Tage auf unzähligen Seiten über Session Sicherheit (und Sicherheit im allgemein) eingelesen, bin mir aber noch nicht wirklich sicher, ob ich das jetzt richtig aufgenommen habe.
Der Login wird über ein klassisches Affenformular realisiert:
PHP:
WENN Session-Variable "logged_in" == true
ZEIGE Webanwendung
WENN Session-Variable "logged_in" != true
ZEIGE Login Formular
Die Seite besteht nur aus einer einzigen index.php, der Rest wird über Ajax reingeladen.
Um Session Fixation, Hijacking und sonstigen Kram auszuschließen, habe ich folgende Mechanismen verbaut:
1. in der index.php werden folgende Werte festgelegt:
PHP:
ini_set('session.use_only_cookies', 1);
ini_set('session.cookie_httponly', true);
Frage dazu: müssen diese Werte bei jeder Seite, die geladen wird (z.b. "zeiterfassung.php") eingebunden werden? Ich hab hier und da unterschiedliche Meinungen gehört, bin momentan aber noch der Meinung, dass es ausreicht, diese Werte in der index.php festzulegen. Oder doch gleich über eine php.ini?
2. nach dem Einloggen wird die Session ID neu erstellt.
Das geschieht mit Hilfe von
PHP:
session_regenerate_id();
Frage dazu: Sollte die ID nach jeder Aktion neu generiert werden? Wenn ich zum Beispiel von der Userverwaltung zur Statistik wechsle, etc?
3. Die Applikation wird nur über https:// erreichbar sein.
Ich glaube mit diesen drei Maßnahmen sollte die App relativ gut abgesichert sein. Oder? Habe auch gelesen, Benutzer über eine Session-Datenbank an ihre IPs zu binden etc. Da das Ding aber wie gesagt eine Agentursoftware darstellt und im Büro oftmals mehrere Leute dieselbe IP haben, wäre dies ein bisschen unsinnig. Hat sonst noch wer Vorschläge?
Ansonsten wurden selbstverständlich gängige Methoden eingehalten, wie z.B. Datenbankaufbau über PDO und Prepared Statements, verschlüsselte Passwörter, etc pp...