carom
2009-12-20, 14:09:43
Hallo!
Der Threadtitel erklärt mein Anliegen grob, ich habe diverse Fragen zu Logins/Benutzeraccounts auf Webseiten, also Sicherheitsfragen, best practice etc..
Wenn ich im folgenden von "Standardsoftware" rede, dann meine ich Boardsoftware wie eben vBulletin, PHPBB und so weiter als auch die bekannten CMS und Blogs, die sich im Internet hoher Verbreitung erfreuen. Der Begriff Standardsoftware ist blöd, aber was besseres fällt mir gerade nicht ein, sorry.
1.) Erstmal etwas allgemeines zu Loginfunktionen, so wie es sie auch hier im Forum gibt.
Im Browser gebe ich ja meinen Username und mein Passwort ein, der Browser schickt die Daten dann an den Webserver und der macht dann den Rest. Wie sicher sind diese Logins genau, verschlüsselt wird dabei ja nichts (also per https oder so), oder? Es geht hier nicht um Onlinebanking, ich rede hier nur von der oben erwähnten "Standardsoftware".
Wenn ich einfach ein HTML-Formular erstelle und die Eingaben per POST an ein PHP-Script weiterleite, habe ich dann 1:1 nachgebaut, wie auch Forensysteme etc. die Logindaten übermitteln, oder haben die da noch ein paarsicherheitsrelevante Dinge verbaut, die ich mit meinem Nachbau nicht erfüllt hätte?
2.) Angenommen, der User hat sich nun erfolgreich eingeloggt. Die meisten Websachen arbeiten dann ja Session-basiert. Wie sieht das im Detail aus?
Meine bisherige Vorstellung:
User loggt sich ein, der Loginversuch ist gültig. Serverseitig wird eine Session erstellt, z.b. von PHP. Diese wird nun bei jedem folgenden Seitenaufruf mitübertragen und der User anhand der Session identifiziert.
Das kann entweder per URL passieren, also das serverseitige Script erzeugt für den eingeloggten User nur noch Links, an deren Ende die Sessionkennung (also dieser kryptische Hash halt) angehängt ist, oder diese Kennung wird aus der URL verbannt und in ein Cookie gesteckt.
Kann man das so weit stehen lassen?
Gut, aber wie findet die Ientifizierung mittels Session dann genau statt? In der vom User übermittelten Session müssen ja irgendwelche Dinge drin stehen, die den serverseitigen Anwendungen sagen, der User ist eingeloggt.
Oder moment mal... reicht es nicht, wenn der Server einfach überprüft, ob die Session gültig ist und nicht irgendein "Fake-Hash" übertragen wurde? Denn wenn der User eine gültige Session-id übertragen kann, dann muss er sich ja auch irgendwann mal eingeloggt haben, denn woher sollte er diese sonst kennen? (Von der böswilligen oder zufälligen übernahme einer fremden Session mal abgesehen, dazu die nächste Frage).
3.) Wie schon erwähnt, so eine Session kann sich ein trickreicher User von anderen Personen eventuell klauen und somit die Session des Opfers übernehmen, d.h. mit dem Opfer-Account eingeloggt sein. Wie schützt man sich dagegen? Also mal ein Beispiel, studivz.de loggt mich nach einem IP-Wechsel automatisch aus. Das heißt wohl, dass zu jeder Session eine IP gespeichert wird, und wenn die nichtmehr mit dem Client übereinstimmt, dann könnte etwas nicht stimmen. Ist das ein gängiges Vorgehen?
Gut, wie macht das aber z.b. vBulletin aus dem 3DCenter hier? Wenn man eingeloggt ist, muss man sich Ewigkeiten nicht mehr einloggen, trotz 24h disconnect und IP-Wechsel des Providers.
Heißt das, dass wenn jemand meinen §DCenter-Cookie klaut direkt meinen Account übernehmen kann?
Das wars fürs erste. Kommt bei dieser Standardsoftware überhaupt irgendwo https oder Verschlüsselung vor? Also vom gehashten Passwort in der Serverdatenbank mal abgesehen.
Danke!!
Der Threadtitel erklärt mein Anliegen grob, ich habe diverse Fragen zu Logins/Benutzeraccounts auf Webseiten, also Sicherheitsfragen, best practice etc..
Wenn ich im folgenden von "Standardsoftware" rede, dann meine ich Boardsoftware wie eben vBulletin, PHPBB und so weiter als auch die bekannten CMS und Blogs, die sich im Internet hoher Verbreitung erfreuen. Der Begriff Standardsoftware ist blöd, aber was besseres fällt mir gerade nicht ein, sorry.
1.) Erstmal etwas allgemeines zu Loginfunktionen, so wie es sie auch hier im Forum gibt.
Im Browser gebe ich ja meinen Username und mein Passwort ein, der Browser schickt die Daten dann an den Webserver und der macht dann den Rest. Wie sicher sind diese Logins genau, verschlüsselt wird dabei ja nichts (also per https oder so), oder? Es geht hier nicht um Onlinebanking, ich rede hier nur von der oben erwähnten "Standardsoftware".
Wenn ich einfach ein HTML-Formular erstelle und die Eingaben per POST an ein PHP-Script weiterleite, habe ich dann 1:1 nachgebaut, wie auch Forensysteme etc. die Logindaten übermitteln, oder haben die da noch ein paarsicherheitsrelevante Dinge verbaut, die ich mit meinem Nachbau nicht erfüllt hätte?
2.) Angenommen, der User hat sich nun erfolgreich eingeloggt. Die meisten Websachen arbeiten dann ja Session-basiert. Wie sieht das im Detail aus?
Meine bisherige Vorstellung:
User loggt sich ein, der Loginversuch ist gültig. Serverseitig wird eine Session erstellt, z.b. von PHP. Diese wird nun bei jedem folgenden Seitenaufruf mitübertragen und der User anhand der Session identifiziert.
Das kann entweder per URL passieren, also das serverseitige Script erzeugt für den eingeloggten User nur noch Links, an deren Ende die Sessionkennung (also dieser kryptische Hash halt) angehängt ist, oder diese Kennung wird aus der URL verbannt und in ein Cookie gesteckt.
Kann man das so weit stehen lassen?
Gut, aber wie findet die Ientifizierung mittels Session dann genau statt? In der vom User übermittelten Session müssen ja irgendwelche Dinge drin stehen, die den serverseitigen Anwendungen sagen, der User ist eingeloggt.
Oder moment mal... reicht es nicht, wenn der Server einfach überprüft, ob die Session gültig ist und nicht irgendein "Fake-Hash" übertragen wurde? Denn wenn der User eine gültige Session-id übertragen kann, dann muss er sich ja auch irgendwann mal eingeloggt haben, denn woher sollte er diese sonst kennen? (Von der böswilligen oder zufälligen übernahme einer fremden Session mal abgesehen, dazu die nächste Frage).
3.) Wie schon erwähnt, so eine Session kann sich ein trickreicher User von anderen Personen eventuell klauen und somit die Session des Opfers übernehmen, d.h. mit dem Opfer-Account eingeloggt sein. Wie schützt man sich dagegen? Also mal ein Beispiel, studivz.de loggt mich nach einem IP-Wechsel automatisch aus. Das heißt wohl, dass zu jeder Session eine IP gespeichert wird, und wenn die nichtmehr mit dem Client übereinstimmt, dann könnte etwas nicht stimmen. Ist das ein gängiges Vorgehen?
Gut, wie macht das aber z.b. vBulletin aus dem 3DCenter hier? Wenn man eingeloggt ist, muss man sich Ewigkeiten nicht mehr einloggen, trotz 24h disconnect und IP-Wechsel des Providers.
Heißt das, dass wenn jemand meinen §DCenter-Cookie klaut direkt meinen Account übernehmen kann?
Das wars fürs erste. Kommt bei dieser Standardsoftware überhaupt irgendwo https oder Verschlüsselung vor? Also vom gehashten Passwort in der Serverdatenbank mal abgesehen.
Danke!!