Ausreichendes Sicherheiskonzept?
Steel
- programmiertechnik
0 alex0 mario0 Johannes Zeller
Hi!
Ich baue gerade an einem Intranetprojekt das Europaweit ausgerollt werden soll. Im Moment artbeite ich an einem Anmeldeverfahren, dass ohne Cookies (Sessions) auskommen soll.
Ich frage mich, ob mein momentanes System ausreicht oder ob jemand dort noch eine Luecke findet.
Folgendes Konzept setze ich gerade um:
Der User meldet sich an und bei korrekten Logindaten wird seine ID, und ein Zeitpunkt gespeichert bis zu dem seine Anmeldung gueltig ist. Im Moment ist das now + 60 Minuten.
Jetzt wird diese Tabelle bei bei jeder Aktion eines Users (Beim Anmelden, aufrufen einer Seite, Dateneingabe,...) zuerst von abgelaufenen IDs befreit und dann nach Gueltigkeit der uebergebenen ID geprueft. Das ganze finde am Anfang jeder aufgerufenen Datei statt. (ASP - nicht .NET - Seiten)
Ich kann also z.B. eine Seite manuell mit GET Parametern aufrufen und ihr eine beliebige ID uebergeben. Wenn diese ID nach dem Delete auf der LogTabelle noch vorhanden ist, wird die gewuenschte Aktion ausgefuehrt/Seite aufgerufen, ansonsten zum Login umgeleitet. Anmelden sollte sich ja nur der User mit koennen so dass es keine Probleme damit gibt wenn jemand einfach eine beliebige ID benutzt.
Was mich jetzt noch etwas stoert ist der Umstand, dass quasi jeder einen beliebigen User imitieren kann, wenn dieser noch einen gueltigen Datenbankeintrag hat, z.B. weil er gerade an etwas arbeitet.
2 Fragen: Ist der eigentliche Denkansatz in Ordnung? Wie kann ich am besten den User verifizieren? Ich habe dabei Probleme mit ASP und einer ID. Bei PHP wuerde ich das ueber eine SessionID (SID in der URL) machen. Bei ASP habe ich nichts entsprechendes gefunden. Nur die Empfehlung soetwas mit einem timestamp zu machen. Die sind mir aber nicht eindeutig genug da das Tool spaeter von tausenden Leuten mehr oder weniger gleichzeitig benutzt wird. Ich uesste ja nun irgendwie eine eindeutige Variable mitschleifen die den User eindeutig identifiziert. Die User IDs sind bekannt, also dafuer eben nicht zu gebrauchen.
Hm. Ich denke grad hab ich mir die Antwort selbst gegeben, auch wennich noch nicht weiss, wie ich das umsetzen soll. Fuer Ideen, Kritik und Tipps waere ich trotzdem dankbar. Gerade das alte ASP mit VBScript macht mir wirklich zu schaffen.
Gruss
Steel
Hi,
wenn du eine ID nur mit dem Timestamp oder Microtime (währe da wohl sinnvoller wenn sich viele gleichzeitig anmelden) Dann kann man sich doch im Prinzip leicht reinhacken oder? Ich nehme einfach einen Timestamp von vor 5 minuten probiere ein paar verschlüsselungen aus und setze ihn in die URL? Oder habe ich da was falsch verstanden?
mfg
Alex
Hallo,
Die ID die du dort von URL zu URL mitschleifen willst, ist nichts
anderes als eine SessionID - egal ob du sie nun so nennst oder
nicht. ;-)
Erzeugen solltest du diese ID einfach aus einem Zufallswert.
Der Timestamp oder Ablaufdatum gehören separat gespeichert.
G,
mario
Hallo Steel,
das was du beschreibst ist genau eine Session-ID.
Was mich jetzt noch etwas stoert ist der Umstand, dass quasi jeder einen beliebigen User imitieren kann, wenn dieser noch einen gueltigen Datenbankeintrag hat, z.B. weil er gerade an etwas arbeitet.
Dieses Problem löst man normalerweise, indem man zufällige und hinreichend lange IDs generiert, sodass es praktisch unmöglich wird, eine gültige ID zu erraten. Ich schätze aber mal, dass es auch bei ASP bereits ein fertiges Session-Modul gibt.
Schöne Grüße,
Johannes