Ich habe eine Website, die OpenID verwendet, um Benutzer anzumelden. Die Bibliothek, die ich benutze, gibt ein Benutzerprofil zurück, wenn der Benutzer sich anmeldet. Dieses Profil enthält die E-Mail des Benutzers, Name, einen Link zum Avatar und eine ID, die der OpenID-Anbieter zurückgegeben hat.Sichere Strategie, um bei der Verwendung von OpenID eingeloggt zu bleiben
Meine Strategie protokolliert, um den Benutzer zu halten, dabei ist:
- Wenn der Benutzer logges in zum ersten Mal, ich einen Hash-Code auf der Grundlage der ID zurückgegeben OpenID erstellen
- Ich speichere diese Hash-Code neben der ID des Benutzers in 2 Cookies.
- Wenn der Benutzer auf meiner Website kommt, überprüfe ich für diese Cookies, und wenn sie verfügbar sind, versuchen Sie die ID und den Hash-Code übereinstimmen, wenn es richtig ist, melden Sie ich den Benutzer in.
Nun ist das Problem das: Wenn diese Cookie-Informationen irgendwie vom Benutzer gestohlen werden, kann sich der Hacker einfach anstelle des Benutzers selbst einloggen. Ich könnte einen neuen Hash-Code für jedes Mal erstellen, wenn sich der Benutzer anmeldet und die Cookins des Benutzers aktualisiert, aber die Informationen anderer Browser/Computer-Cookies ungültig machen.
Da die StackOverflow-Website nicht von einem solchen Problem betroffen ist, würde ich gerne wissen, was ich tun soll, um sowohl meine Anmeldestrategie zu sichern als auch die Funktionalität hinzuzufügen, um für die Benutzer angemeldet zu bleiben.
Was meinen Sie mit "Hash-Code"? Wenn es sich lediglich um einen sicheren Hash der Openid-URL des Benutzers handelt, kann ein Angreifer das erraten - es besteht kein Grund, sich die Mühe zu machen, die ursprünglichen Cookies überhaupt zu erhalten. –
Woher wissen Sie, dass die StackOverflow-Website nicht unter diesem Problem leidet? –
@NickJohnson du hast recht, aber ich tue mein Bestes, um es ihnen schwer zu raten. Aber irgendwie halte ich eine zufällige Session-ID (wie du erwähnt hast) für eine bessere Lösung. –