Login-System
Login-System
Hallo Leute,
ich würde mich gerne bei Euch über das Loginssystem einer Webseite informieren.
Ich weiß nicht, wie ich das machen kann/sollte und wie es sicher ist.
Im Moment ist es so, dass ich 2 Cookies für Benutzername und Passwort speichere.
Auf der API Seite lese ich die Cookies ab und schaue jedes mal, ob der User eingeloggt ist.
Doch zufrieden bin ich mit dieser Methode nicht, da alles in Klartext gespeichert wird. (Im Browser als Cookie)
Was sagt Ihr dazu?
Grüße,
Kmitska
ich würde mich gerne bei Euch über das Loginssystem einer Webseite informieren.
Ich weiß nicht, wie ich das machen kann/sollte und wie es sicher ist.
Im Moment ist es so, dass ich 2 Cookies für Benutzername und Passwort speichere.
Auf der API Seite lese ich die Cookies ab und schaue jedes mal, ob der User eingeloggt ist.
Doch zufrieden bin ich mit dieser Methode nicht, da alles in Klartext gespeichert wird. (Im Browser als Cookie)
Was sagt Ihr dazu?
Grüße,
Kmitska
Re: Login-System
Der Benutzername sollte eher nicht in den Cookies gespeichert werden, das Passwort auf gar keinen Fall!Kmitska hat geschrieben:Im Moment ist es so, dass ich 2 Cookies für Benutzername und Passwort speichere.
Bei XSS-Angriffen hat der Angreifer dann sofort alle Zugangsdaten eines Benutzers und kann diese eventuell auch in anderen Diensten missbrauchen. Außerdem fällt es einem Angreifer im lokalen Netzwerk (WLAN?) viel leichter das Passwort zu sniffen, wenn es bei jedem Request mitgeschickt wird.
Für einen sicheren Datenverkehr solltest du mal HTTPS verwenden. Benutzerspezifische Informationen solltest (in lesbarer Form) trotzdem so selten wie nur irgendwie möglich übertragen, im Idealfall nur ein einziges Mal beim Login. Nun kannst du dir z.B. deine Benutzer-ID in der Session speichern und jedes mal abfragen.Kmitska hat geschrieben:Was sagt Ihr dazu?
-
- Beiträge: 105
- Registriert: Fr Mär 01, 2013 10:31 am
Re: Login-System
Du könntest Nutzername und Passwort (falls möglich) auch in einer Datenbank verschlüsselt speichern, zum Beispiel mit Hilfe einer Hashfunktion. Beim Login-Versuch jagst du dann die eingegebenen Daten ebenfalls durch die Hash-Funktion und vergleichst sie mit den in der DB gespeicherten Werten.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Login-System
Bitte kräftig würzen....GilbertDur hat geschrieben:Du könntest Nutzername und Passwort (falls möglich) auch in einer Datenbank verschlüsselt speichern, zum Beispiel mit Hilfe einer Hashfunktion.
Ein Salt wird auf das Passwort addiert, daraus wird der Hashwert gebildet. Fehlt der Salt, so gibt es im Internet Tabellen, wo man den Hashwert nachschlagen kann und das dazugehörige Passwort erhält.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Login-System
Jop, Salten ist pflicht.
Was du aber statt Benutzername und Passwort speichern solltest, ist eine Eindeutige ID, die auf deinem Server in einer DB hinterlegt ist, mitsamt Uhrzeit der Ausstellung. So brauchst du nur die ID zu vergleichen und es werden keine benutzerspezifischen Merkmale übertragen.
Wenn es geht, müsste man da egt noch Computerspezfische Merkmale mit einbauen, damit das übernehmen einer solchen ID nicht so ohne weiteres Möglich ist.
Zudem sollte so eine ID auslaufen, nach einer Woche, 2, 3, 4, was auch immer. Nicht so wie hier im Forum
Was du aber statt Benutzername und Passwort speichern solltest, ist eine Eindeutige ID, die auf deinem Server in einer DB hinterlegt ist, mitsamt Uhrzeit der Ausstellung. So brauchst du nur die ID zu vergleichen und es werden keine benutzerspezifischen Merkmale übertragen.
Wenn es geht, müsste man da egt noch Computerspezfische Merkmale mit einbauen, damit das übernehmen einer solchen ID nicht so ohne weiteres Möglich ist.
Zudem sollte so eine ID auslaufen, nach einer Woche, 2, 3, 4, was auch immer. Nicht so wie hier im Forum

Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
-
- Beiträge: 105
- Registriert: Fr Mär 01, 2013 10:31 am
Re: Login-System
Step by Step. Es ging doch um die GrundlagenXin hat geschrieben:Bitte kräftig würzen....GilbertDur hat geschrieben:Du könntest Nutzername und Passwort (falls möglich) auch in einer Datenbank verschlüsselt speichern, zum Beispiel mit Hilfe einer Hashfunktion.
Ein Salt wird auf das Passwort addiert, daraus wird der Hashwert gebildet. Fehlt der Salt, so gibt es im Internet Tabellen, wo man den Hashwert nachschlagen kann und das dazugehörige Passwort erhält.

Re: Login-System
Hallo Leute,
also, ich fass mal kurz alles zusammen und Ihr korrigiert mich ok?
1) Ich erstell erst mal eine Tabelle in der Datenbank (MySQL):
| session_id | date |
2) Nach dem Login wird in Klartext über SSL(HTTPS) Benutzername und Passwort gesendet.
3) Auf der Server-Seite wird das Passwort als Hash gespeichert und das gesendete ebenfalls gehasht und kontrolliert.
4) Bei einem ergolreichen Login bekommt der User eine Session_id zugesendet, die er dann als Cookie speichert.
5) Bei jeder weiterem API Zugang wird die ID gesendet und wenn sie valid ist heißt das für den Server, dass der User eingeloggt ist.
Nun meine Fragen:
- Wie wird diese ID in der Datenbank gelöscht? Nur die wenigsten melden sich wieder ab.
- So ist doch das Hijacking leichter? Einfach die Session_id holen?
Grüße
Kmitska
also, ich fass mal kurz alles zusammen und Ihr korrigiert mich ok?

1) Ich erstell erst mal eine Tabelle in der Datenbank (MySQL):
| session_id | date |
2) Nach dem Login wird in Klartext über SSL(HTTPS) Benutzername und Passwort gesendet.
3) Auf der Server-Seite wird das Passwort als Hash gespeichert und das gesendete ebenfalls gehasht und kontrolliert.
4) Bei einem ergolreichen Login bekommt der User eine Session_id zugesendet, die er dann als Cookie speichert.
5) Bei jeder weiterem API Zugang wird die ID gesendet und wenn sie valid ist heißt das für den Server, dass der User eingeloggt ist.
Nun meine Fragen:
- Wie wird diese ID in der Datenbank gelöscht? Nur die wenigsten melden sich wieder ab.

- So ist doch das Hijacking leichter? Einfach die Session_id holen?
Grüße
Kmitska
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Login-System
Hier gilt Folgendes Konzept:2) Nach dem Login wird in Klartext über SSL(HTTPS) Benutzername und Passwort gesendet.
3) Auf der Server-Seite wird das Passwort als Hash gespeichert und das gesendete ebenfalls gehasht und kontrolliert.
Bei der Registrierung, speicherst du kein klartext Passwort, sondern das Passwort als Gesalzener Hash. z.B:
Code: Alles auswählen
md5(passwort+"salt")
Dann bei der Anmeldung, sollte über eine gesicherte HTTPS Verbindung Nutzername und Passwort ausgetauscht werden, das Passwort wird auf die selbe Art und Weise gehasht und verglichen.
Du kannst dir entweder per Cronjob ein Programm drüberlaufen lassen, der veraltete Sessions löscht.- Wie wird diese ID in der Datenbank gelöscht? Nur die wenigsten melden sich wieder ab.
Du kannst aber auch, bei einer Anmeldung mit einer Session-ID überprüfen, wie alt diese ist und bei überschrittener Gültigkeit den Nutzer zur eingabe des Passworts zwingen. Das sollte dann aber nach Möglichkeit bei jedem Zugriff kontrolliert werden, damit ein Bösewicht nicht einfach nur die Verbindung aufrecht erhalten kann.
Es ist nicht leichter, da die Session-ID ja als Cookie vorliegt, das selbe wie mit deinem Nutzername und Passwort, aber eben Nutzer unabhängig.So ist doch das Hijacking leichter? Einfach die Session_id holen?
Wenn jemand die Session-ID erhält, kann er sich einige Tage lang Zugriff erschleichen. Klaut er Nutzername und Passwort, kann er sich dauerhaft Zugang erschleichen und evt sogar auf andere Websiten zugriff erhalten(Email, Amazon, EBanking). Was ist wohl schlimmer?
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Login-System
Hmm.. man könnte doch dann eigentlich gleich die ganze Seite mit SSL unterstützen?
Und ich habe jetzt eine Tabelle mit diese Spalten erstellt:
Die letzte Frage, um sicher zu gehen:
Das Passwort wird jedes mal auf der Server-Seite verschlüsselt und nicht auf der Client Seite?
Möchte bald die Software online zum testen stellen und wenn alles gut läuft wirds kommerziell.
Würde mich freuen, wenn Ihr die Software mittesten würdet.
Wegen Passwort: Ich hatte nicht gedacht, dass ich soweit damit komme. Hatte deshalb alles auf Cookies gemacht.
Und ich habe jetzt eine Tabelle mit diese Spalten erstellt:
Code: Alles auswählen
username | session_id | date
Das Passwort wird jedes mal auf der Server-Seite verschlüsselt und nicht auf der Client Seite?
Möchte bald die Software online zum testen stellen und wenn alles gut läuft wirds kommerziell.
Würde mich freuen, wenn Ihr die Software mittesten würdet.

Wegen Passwort: Ich hatte nicht gedacht, dass ich soweit damit komme. Hatte deshalb alles auf Cookies gemacht.

- darksider3
- Beiträge: 347
- Registriert: Fr Sep 14, 2012 6:26 pm
- Wohnort: /dev/sda1
- Kontaktdaten:
Re: Login-System
Eindeutig auf der Server Seite. Am besten versuchst Du dir eine Anbindung an einen GPG-Agenten auf den Server zu ziehen, damit Du diese mit einem Serverseitigen Passwort(welches nach X tagen ausläuft, womit auch die ID's wieder ungültig werden) verschlüsseln kannst, oder mit einem dauernd generierten SSH-Images/Hashes.Das Passwort wird jedes mal auf der Server-Seite verschlüsselt und nicht auf der Client Seite?
<-Biete mich an da mitzumachenMöchte bald die Software online zum testen stellen und wenn alles gut läuft wirds kommerziell.

Bin dabei.Würde mich freuen, wenn Ihr die Software mittesten würdet.
Achtung: Datenschützer Quengeln wegen allem - da braucht man nicht allzu viel drauf geben, solange man eine Ordentliche Verschlüsselung(oder Zwei) und einen(oder 2) Salts nutzt.Wegen Passwort: Ich hatte nicht gedacht, dass ich soweit damit komme. Hatte deshalb alles auf Cookies gemacht.
PS: Da war ich 4 Tage nicht aktiv, und dann kommt etwas darein, wo ich etwas Qualifiziert zu sagen kann... Fu^^
MFG
effizienz ist, wenn ich ein loch bohre und hinterher mein nachbar auch ein bild aufhängen kann... ^^
Meine Homepage und der Microblog von mir
Live Life dont let Life Live You!
Am meisten Aktiv in Webentwicklung und PHP im Wiki
Meine Homepage und der Microblog von mir

Live Life dont let Life Live You!
Am meisten Aktiv in Webentwicklung und PHP im Wiki