Autor Beitrag
Jacer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 105

Windows 7, Vista, Ubuntu
HTML,CSS,PHP,Delphi 7
BeitragVerfasst: Sa 31.10.09 16:31 
Moin allerseits,

ich möchte einen Teil in einem Programm (um genauer zu sagen ein TabSheet eines PageControls) mit einem Passwort schützen.
Also lediglich bei Aufruf eine Abfrage des Passwortes, danach Freigabe des TabSheets.
Da ich für den Benutzer ebenfalls die Funktion einbauen will, das Passwort ändern zu können, und aus Sicherheitsgründen möchte ich dass Passwort natürlich nicht hardcoded direkt im Quelltext stehen haben.

Ich habe jetzt als erstes daran gedacht eine Datenbank zu erstellen und über md5 ein Passwort einzutragen bzw abzufragen.
Ist das mit die sicherste Methode oder was habe ich für Alternativen mit Delphi?

gruß
jacer

_________________
A look in the eyes often says more than a hundred words could ever express.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 02.11.09 22:22 
Du hast an sich alle Möglichkeiten.

Ich würde es am einfachsten so machen:
Du verschlüsselst einfach dein Passwort und speicherst es in irgendeine Datei rein (ist ja dann verschlüsselt). Zum verschlüsseln kannst dir ja z.B. selbst was überlegen oder was fertiges angucken.

Wenn die Datei gelöscht wird (=das Programm kennt das richtige Passwort nichtmehr) ist das die selbe Frage wie, was passiert wenn der User das Passwort nichtmehr weiß.

Master-Passwort, dass nur du als Programmierer kennst?

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Di 03.11.09 21:21 
user profile iconJacer hat folgendes geschrieben Zum zitierten Posting springen:

Ich habe jetzt als erstes daran gedacht eine Datenbank zu erstellen und über md5 ein Passwort einzutragen bzw abzufragen.

Die Idee mit einem Hash ist schonmal gut, deutlich besser, als das Kennwort verschluesselt abzuspeichern. Dabei nicht vergessen, ein "salt" zu verwenden, so dass der Hash nicht so einfach geknackt werden kann.
Zur Kennwortaenderung kannst Du analog zu Windows die Eingabe des alten Kennworts verlagen, dieses gegen den aktuellen Hash pruefen und erst dann das neue setzen.
Haeufig gibt es noch weitere Anforderungen:
1. Ein Kennwort darf nicht mehrfach hintereinander verwendet werden. Das kann man erreichen, indem man die letzten n Hashes abspeichert und das neue Kennwort dagegen checkt.
2. Das neue Kennwort muss sich um mindestens n Zeichen vom alten unterscheiden. Das kann man durch Vergleich mit dem alten Kennwort erreichen,
das man bei der Kennwortaenderung ebenfalls abfragt.
3. Manchmal ist auch gefordert, dass sich das neue Kennwort von den letzten n in mindestens m Zeichen unterscheidet. Das laesst sich meines wissens leider nicht sicher (d.h. ohne speichern der alten Kennworte) erreichen. Deshalb wuerde ich versuchen den Auftraggeber davon abzubringen. (Was natuerlich nur dann notwendig ist, wenn es einen Auftraggeber gibt.)

twm