Hallo erstmal.
Bin recht neu und arbeite seit einiger Zeit mit PHP. Begonnen hab ich jedoch erst mit PHP 5
Ich habe bald ein kleines Diplomprojekt und möchte mich auch jetzt schon damit auseinandersetzen und mir möglichst gute Dinge überlegen, die ich danach nur noch umsetzen muss.
Also, es geht bei dem Projekt um eine Website mit Login. Alles läuft also intern ab und ist eigentlich nicht relevant.
Ich habe mich nun also mal hingesetzt und mir Gedanken darüber gemacht, wie ich das am besten aufbaue. Sprich das Login, die ganze Session Sache und die Datenbank.
Meine Schwerpunkte:
- Sessions in die Datenbank
- Ohne Cookies arbeiten, immer die Session in die url werfen
- Saubere URL's, bis auf die sessid^^ (mit mod_rewrite) also etwa so url.com/sessid/page
- Alles soll über eine Seite laufen, von der aus die jeweiligen Pages includet werden...
- Sicheres Login
- SSL Verschlüsselung
Gut, das wären mal meine Punkte, die sicher rein kommen sollen.
Ich weis, jeder hat einen anderen Denkansatz, daher ist mir eure Meinung auch sehr wichtig Wie würdet ihr das ganze handeln? Was haltet ihr von den folgenden 3 Klassen?
db_handler:
Ist zuständig für einen abstrakten Zugriff auf die Datenbank. Arbeitet mit mysqli und beinhaltet Methoden für vielerlei Dinge, unter anderem das escapen von Formularinhalten die in die DB kommen und natürlich die Verbindungen mit einer oder mehreren DB's. Zudem liefert er ein Result zurück, das mittels Argument eben fetch, row, assoc oder array ist.
session_handler:
Der Session-Handler ist für das Session-Management zuständig. Er schreibt die Sessions in eine DB und erstellt auch die Einträge in der Supeglobalen $_SESSION Variable.
Zudem liest er sie aus.
jetzt wirds interessannt. Hab nämlich noch nie ein richtiges Login geschrieben
login_handler:
Der loginhandler prüft die Usereingaben beim Login und danach bei jeder neuen Aktion, ob der User noch eingeloggt ist und ob die session id's übereinstimmen.
dabei wird die session id in der session mit der in der id in der db tabelle der session und des users vergleicht. stimmt sie, gehts normal weiter, stimmt sie nicht, wird alles zurückgesetzt und man bekommt das login zu gesicht.
Die Seite möchte ich über die index.php laufen lassen. Da wird geprüft, ob wer eingeloggt ist, wenn ja wird eine neue seite includet und und und. Hat meiner Meinung nach den Vorteil, dass ich diese ganze Sessionhandling sache nur an einem ort durchführen muss...
So, hört sich in der Theorie gut an, aber ist es das auch? Habe noch nie ein Login geschrieben um ehrlich zu sein, hatte mich damit nie beschäftigen müssen.
Kann mir jemand gute Tips geben? Sind meine Ansätze korrekt? Evt hat jemand ja ne bessere methode um sicher zu stellen, ob ein user noch eingeloggt ist oder nicht.
Gruss und Danke schonmal im Voraus.
Bin recht neu und arbeite seit einiger Zeit mit PHP. Begonnen hab ich jedoch erst mit PHP 5
Ich habe bald ein kleines Diplomprojekt und möchte mich auch jetzt schon damit auseinandersetzen und mir möglichst gute Dinge überlegen, die ich danach nur noch umsetzen muss.
Also, es geht bei dem Projekt um eine Website mit Login. Alles läuft also intern ab und ist eigentlich nicht relevant.
Ich habe mich nun also mal hingesetzt und mir Gedanken darüber gemacht, wie ich das am besten aufbaue. Sprich das Login, die ganze Session Sache und die Datenbank.
Meine Schwerpunkte:
- Sessions in die Datenbank
- Ohne Cookies arbeiten, immer die Session in die url werfen
- Saubere URL's, bis auf die sessid^^ (mit mod_rewrite) also etwa so url.com/sessid/page
- Alles soll über eine Seite laufen, von der aus die jeweiligen Pages includet werden...
- Sicheres Login
- SSL Verschlüsselung
Gut, das wären mal meine Punkte, die sicher rein kommen sollen.
Ich weis, jeder hat einen anderen Denkansatz, daher ist mir eure Meinung auch sehr wichtig Wie würdet ihr das ganze handeln? Was haltet ihr von den folgenden 3 Klassen?
db_handler:
Ist zuständig für einen abstrakten Zugriff auf die Datenbank. Arbeitet mit mysqli und beinhaltet Methoden für vielerlei Dinge, unter anderem das escapen von Formularinhalten die in die DB kommen und natürlich die Verbindungen mit einer oder mehreren DB's. Zudem liefert er ein Result zurück, das mittels Argument eben fetch, row, assoc oder array ist.
session_handler:
Der Session-Handler ist für das Session-Management zuständig. Er schreibt die Sessions in eine DB und erstellt auch die Einträge in der Supeglobalen $_SESSION Variable.
Zudem liest er sie aus.
jetzt wirds interessannt. Hab nämlich noch nie ein richtiges Login geschrieben
login_handler:
Der loginhandler prüft die Usereingaben beim Login und danach bei jeder neuen Aktion, ob der User noch eingeloggt ist und ob die session id's übereinstimmen.
dabei wird die session id in der session mit der in der id in der db tabelle der session und des users vergleicht. stimmt sie, gehts normal weiter, stimmt sie nicht, wird alles zurückgesetzt und man bekommt das login zu gesicht.
Die Seite möchte ich über die index.php laufen lassen. Da wird geprüft, ob wer eingeloggt ist, wenn ja wird eine neue seite includet und und und. Hat meiner Meinung nach den Vorteil, dass ich diese ganze Sessionhandling sache nur an einem ort durchführen muss...
So, hört sich in der Theorie gut an, aber ist es das auch? Habe noch nie ein Login geschrieben um ehrlich zu sein, hatte mich damit nie beschäftigen müssen.
Kann mir jemand gute Tips geben? Sind meine Ansätze korrekt? Evt hat jemand ja ne bessere methode um sicher zu stellen, ob ein user noch eingeloggt ist oder nicht.
Gruss und Danke schonmal im Voraus.
Kommentar