![]() |
Geheime URL bzw. automatisches Einloggen mit Browser?
Hallo.
Ich habe folgendes Problem: Ein PHP-Interface erlaubt einem Nutzer (sofern aktiviert), das Einloggen in das System mit 1 URL. Diese URL sei vereinfacht www.example.com/login.php?secretkey=<...> Der Secretkey enthält den Benutzernamen und das Passwort in einer serverspezifischen Verschlüsselung. Die Daten sind somit nicht ohne Zusatzinformation zu entschlüsseln. Da aber der Secretkey (sofern Salt nicht geändert wird) aber zum Einloggen ausreicht, ist es als eine geheime Information anzusehen. Solange ich die geheime URL von meinem (Annahme: nicht gehackten) Heim-PC aufrufe, ist alles OK. Das Problem besteht, wenn ein Nutzer die geheime URL von einem fremden PC aufruft (was man eigentlich nicht tun sollte). Die URL wäre im Verlauf und somit kann der Einloggvorgang selbst von einem unerfahrenen User durchgeführt werden. Meine Fragen: 1. Gibt es mit einer Delphi-Application eine Möglichkeit, eine geheime URL aufzurufen, die nicht gespeichert wird (Ausnahme: wenn PC mit Keylogger infiziert), aber trotzdem die nachfolgenden Webseiten (die durch ein HTTP-Redirect hergeholt werden) mit dem Standardbrowser behandelt werden können? Oder bessere Variante: 2. Gibt es mit einer Delphi-Application eine Möglichkeit, ein HTML-Formular (mit Benutzername und Passwort) auszufüllen, ABER die nachfolgenden Webseiten mit dem Standardbrowser zu behandeln? (Man müsste dem Browser irgendwie das Formular-Ausfüllen beibringen --> Problem: Browser soll beliebig sein!) Hat jemand eine Idee? Ich befürchte aber, dass das nicht so möglich sein wird. Die Anwendung könnte die Benutzerdaten verschlüsselt im Anhang besitzen und sie mithilfe einer Hardware-ID entschlüsseln; anschließend das HTML-Formular ausfüllen (=einloggen). Damit würde der automatische Einloggvorgang, der PC gebunden wäre, nicht auf fremden PCs durchgeführt werden. Gruß blackdrake |
Re: Geheime URL bzw. automatisches Einloggen mit Browser?
ich würde an der URL ansetzen. Mache es doch wie die meisten fertigen Communities etc.
Erstelle beim Login auf der Webseite eine SessionID. Zu dieser SessionID vermerkst du dir auf dem Server welcher Benutzer es ist. Somit gibt es auch nicht das Problem das jemand das Passwort entschlüsseln kann. Und jedesmal wenn eine URL mit Angabe dieser SessionID aufgerufen wird schaust du in der Datenbank ob es diese gibt und gewährst dann den Zugriff bzw. verweigerst ihn. Wenn sich jemand abmeldet löschst du die SessionID und schon bringt sie niemandem mehr was weil sie nicht merh gültig ist. Gegebenfalls kannst du es ja auch so machen das man mehrere Sessions erstellen kann so das du dich auf einem anderen Rechner neu anmeldest, eine neue SessionID bekommst aber die alte welche du zu Hause verwendest weiterhin gültig bleibt. |
DP-Maintenance
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Internet / LAN / ASP.NET" verschoben.
|
Re: Geheime URL bzw. automatisches Einloggen mit Browser?
Hallo.
SessionID hört sich für mich ziemlich zeitbegrenzt an. Der Sinn ist es ja, dass das Einloggen immer möglich ist, mit 1 Mausklick. Im Moment verwende ich die Technik mit dem Secret-Key. Das funktioniert zwar, kann aber für unwissende User verhängnisvoll werden, wenn sie die geheime URL von einem fremden PC aus verwenden. Bei der SessionID wäre doch das Problem, dass sie ungültig wird, wenn man sich ausloggt. Und wäre die Session unendlich, dann könnte sie wiederrum von einem fremden PC aufgerufen werden, wenn die (geheime) URL im Verlauf bleibt. Gruß blackdrake |
Re: Geheime URL bzw. automatisches Einloggen mit Browser?
Wie wäre es folgendermaßen: Du sendest einen Request vor dem Aufruf an den Server. Der Server erstellt dann eine Session intialisiert sie mit einem bestimmten Salt. Diesen Salt bekommt die Anwendung dann als Antwort. Die Anwendung berechnet dann mit dem Salt den Secret Key. Dadurch ändert sich dieser bei jedem neuen Einloggen, da der Server immer wieder einen anderen Salt vorraussetzt.
Du kannst ja den Salt dann noch nach einer bestimmten Zeit ablaufen lassen. Ist diese Zeit erreicht, muss zuerst ein neuer Salt vom Server angefragt werden. |
Re: Geheime URL bzw. automatisches Einloggen mit Browser?
Hallo littleDave.
Diese Idee ist super. Vielen Dank. Ich habe jetzt folgendes geplant:
Die Technik wird von mir zu einem späteren Zeitpunkt umgesetzt. Im Moment war mir die Idee und der daraus resultierende Plan wichtig. Problematisch wird jedoch, dass ich durch Delphi an Windows gebunden bin, obwohl das PHP-System logischerweise für alle Betriebssysteme ist. C++, das Cross-Platform ist, kann ich leider nicht. :? Gruß blackdrake |
Re: Geheime URL bzw. automatisches Einloggen mit Browser?
Darf ich ein paar Verbesserungsvorschläge machen?
Verschlüssele nicht die Daten, sondern hashe sie. Dann macht es auch nichts mehr, wenn SessionID oder SecretKey bekannt werden. Am besten fügst du die SessionID an das Passwort an, wendest darauf dann die Hash-Funktion an und verschickst das ganze zusammen mit dem Benutzernamen an den Server (dann muss der Server nicht alles durchprobieren - das ist ineffektiv). Du kannst sogar soweit gehen, die SessionID im Klartext mitzuschicken - durch den Hash ist das egal, und die Serverlast reduziert sich. Der Server muss nur prüfen, ob die SessionID in seiner Liste steht und selbst den Hash aus SessionID und Passwort berechnen. Der Nachteil an diser Methode (bei deiner allerdings auch), ist, dass der Server die Passwörter im Klartext speichern muss. Wenn ein Angreifer also die Datenbank in Händen hält, hat er auch die Macht über alle Benutzerkonten. |
Re: Geheime URL bzw. automatisches Einloggen mit Browser?
Hallo Apollonius.
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Gruß blackdrake |
Re: Geheime URL bzw. automatisches Einloggen mit Browser?
MD5 ist ja bereits ein Hash
|
Re: Geheime URL bzw. automatisches Einloggen mit Browser?
Zitat:
Apollonius sah ein Sicherheitsrisiko jedoch bei der Datenübergabe bei dem Loginvorgang, da man dort den SecretKey anhand der (eigentlich geheimen) SessionID entschlüsseln könnte. Würde diese Datenübergabe gehashed anstelle von verschlüsselt sein, müsste ich im Gegenzug serverseitig auf Hashs verzichten, was irgendwie sogar schlimmer wäre. Gruß blackdrake |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz