![]() |
Benutzer Login mit Passwort
Hi junx!
Folgendes Problemchen: Hab mit nen paar Kumpels ein kleines tool geschrieben. Dieses wollen wir nun schützen, indem wir eine Login-Funktion einbauen. Die Benutzer sollen sich mit einem Accountname und Password einloggen. Hier ist das Problem - ich weiß nicht wo! Habs hingekriegt, sich auf nem mysql Server einzuloggen. Problem: kann meinen PC nicht 24/7 anlassen, d.h. ich brauch einen mysql-server im Internet der externe Zugriffe erlaubt. Ich hab stundenlang gesucht, glaubt mir, es gibt keinen kostenlosen! Habs auch geschafft, .txt Dateien von meinem FTP-Server (host:funpic.de) runterzuladen und auszulesen, jedoch wird hier immer die ganze Datei ausgelesen. Hier die Funktion dazu:
Delphi-Quellcode:
Ich suche eine sichere Benutzer-Login Variante. Möglichst sollten sich auch nicht 2 Benutzer in einen Account einloggen können, sonst wär es ja sinnlos. Bitte um eure Hilfe!
Function GetHTML(AUrl: string): string;//KEY-CHECK:
var databuffer : array[0..4095] of char; ResStr : string; hSession, hfile: hInternet; dwindex,dwcodelen,dwread,dwNumber: cardinal; dwcode : array[1..20] of char; res : pchar; Str : pchar; begin ResStr:=''; Result:=''; if pos('http://',lowercase(AUrl))=0 then AUrl:='http://'+AUrl; hSession:=InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); If assigned(hSession) Then Try hfile:=InternetOpenUrl( hsession, pchar(AUrl), nil, 0, INTERNET_FLAG_RELOAD, 0); if assigned(hfile) then Try dwIndex := 0; dwCodeLen := 10; HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex); res := pchar(@dwcode); dwNumber := sizeof(databuffer)-1; if (res ='200') or (res ='302') then begin while (InternetReadfile(hfile,@databuffer,dwNumber,DwRead)) AND (dwRead <>0) do begin databuffer[dwread]:=#0; Str := pchar(@databuffer); resStr := resStr + Str; Application.ProcessMessages; end; end else ResStr := 'Status:'+res; Finally InternetCloseHandle(hfile); End; Finally InternetCloseHandle(hsession); End; Result := ResStr; end; danke im Vorraus, mfg infY |
Re: Benutzer Login mit Passwort
Regel Nummer 1: Sicher gibt es nicht!
Und egal wo du dein Passwort versteckst, was willst du damit machen? Eine IF-Abfrage kann ich dir ratz fatz rauspatchen. Da kann dein PRogramm auf dem Mond nach Passwörtern gucken. Ich überspringe die Abfrage. Du könntest Teile des Programms verschlüsseln, welche nur mit dem richtigen Passwort wieder entschlüsselt wird, ansonsten kommt eben kein brauchbarer Code heraus. Oder du errechnest aus den Passwörtern o.ä. wichtige Konstanten, ohne die dein Programm nicht brauchbar wäre. Du müsstest also eine Vollzeitpräsenz des Passwortes schaffen und dennoch... wenn es einmal geknackt ist, dann ist es vorbei. Lohnt sich also wirklich der Aufwand für Euch? |
Re: Benutzer Login mit Passwort
HI,
einen MySQL-Server rund um die Uhr laufen zu lassen (auf einem privaten PC) finde ich nicht so gut. Du hast doch einen Account bei Funpic. Erstell dir dort ein PHP_Script, dass die Anmeldung übernimmt. Du brauchst dann auch noch eines, dass die Abmeldung übernimmt. Diese beiden PHP_Scripte haben den Zugriff auf die Funpic-MySQL-DB. Darüber regelst du den Login. Hierbei würde ich dir empfehlen, User und PW über POST zu senden, da das dann nicht mehr so leicht zu knacken ist oder nimm gleich die Checksummen. Was beim Abmelden schwer fällt, ist dass du dich auf jeden Fall abmelden müsstest (oder du machst eine Zugriffsbeschränkung für ~2 Std. ohne Abmeldung). Ich weiß jetzt nicht ob der Code zur VCL oder zur nonVCL gehört, aber in beiden Varianten würde ich hier IdHTTP als Träger vorschlagen. Bernhard EDIT: Zur Sicherheit: Es würde mich wundern, wenn du einen HTTPS-Zugriff hinbekämst. |
Re: Benutzer Login mit Passwort
Zitat:
Dann musste dich auch nicht mit SQL injection rumschlagen, guck dir mal die Komunikation von Anwendung und externer DB unter einem Sniffer an... schrecklich |
Re: Benutzer Login mit Passwort
Zitat:
Wenn nicht, was spricht gegen eine Art Lizenz-Datei die man sich gegen eine einmalige Anmeldung am Server herunter laden kann und auf dem Rechner speichert. Dazu generiert eurer Tool eine Art eindeutigen Computer-ID aus z.B. MAC-Adresse oder Windows-Seriennummer oder weiß der Teufel was. Zusammen mit UserName, Passwort und eben dieser ID generiert ihr eine verschlüsselten String z.B. MD5-Hash auf dem Server und schickt es dem Tool zurück, welches dann diesen String auf Platte speichert. Beim nächsten Start, prüft euer Tool den eingegebenen UserName, Passwort und die neu ermittelte ID gegen den String in der gespeicherten Datei und schon sollte der Benutzer authentifiziert sein. So verhinderst ihr zunächst einmal, daß euer Tool einfach weiter kopiert werden. Auch ein Sniffer wäre sinnlos, wenn einmal die Lizenz auf dem Rechner liegt. Und wenn ihr auf den Server noch eine Benutzerprüfung vornehmt, welcher Benutzer überhaupt eine Lizenz bekommen kann, könnt ihr auch sicher sein, dass nur gewünschte Benutzer euer Tool verwenden können. Ob man nun einzelne Programmteil verschlüsseln muss, so wie Bernhard schreibt, weiß ich nicht. Ich denke mal, dass man mit eurem Tool mit einem Mausklick nicht unbedingt die Weltherrschaft an sich reisen kann, so das dieser Aufwand nicht nötig sein muß. Hier müßt ihr Sicherheit und Nutzen gegen einander abwägen. Zu den If-Abfragen-Rauspatchen ... wenn euer Tool an mehren stellen im Code die Lizenzprüfung vornimmt, wird es schon nerviger für nen Cracker all die entsprechenden Stellen zu finden, aber nicht unmöglich. Wie schon gesagt wurde: 100%ige Sicherheit gibt es nicht. Vielleicht ist ja mein Vorschlag eine Idee für euch? |
Re: Benutzer Login mit Passwort
Okay schonmal gute Vorschläge, werd mich mal genauer damit beschäftigen..
danke ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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