AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Einlesen aus Datenbank

Ein Thema von t0mmy · begonnen am 12. Sep 2011 · letzter Beitrag vom 13. Sep 2011
Antwort Antwort
Seite 1 von 3  1 23      
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#1

Einlesen aus Datenbank

  Alt 12. Sep 2011, 16:08
Datenbank: MySql • Version: 2005 • Zugriff über: ADO
Hallo!

Mein Problem is es, das ich ein Loginfenster habe wo ich die Anmeldedaten aus einer MySQL Datenbank vergleiche. Beispiel Also ich tippe den Benutzername ein, dieser wird in der Datenbank gesucht und das Passwort wird in der Datenbank mit dem verglichen mit dem ich mich anmelden will..


Delphi-Quellcode:

procedure TLogin.Button1_AnmeldenClick(Sender: TObject);
begin
    datamod_formular.DataModule1.ADOConnection1.ConnectionString :=
  'Provider=SQLOLEDB.1;Password=****'+
  ';Persisit Security Info=True;User ID = ***'+
  ';Initial Catalog=***;Data Source=PROG-PC\SQLEXPRESS';


  Try
   datamod_formular.DataModule1.ADOConnection1.Open;
   datamod_formular.DataModule1.ADOQuery2_login.SQL.Clear;
   datamod_formular.DataModule1.ADOQuery2_login.SQL.Text := 'Select Passwort from Benutzer where Vorname ='''+Edit1_Benutzername.Text+'''';
   datamod_formular.DataModule1.ADOQuery2_login.Active := True;
   datamod_formular.DataModule1.ADOQuery2_login.Open;

   if datamod_formular.DataModule1.ADOQuery2_login.Eof then
   begin
     ShowMessage('Nix');
   end
   else
   begin
     ShowMessage(datamod_formular.DataModule1.ADOQuery1.FieldByName('Passwort').AsString);
   end;
  except
    on E : Exception do
    begin
      ShowMessage(E.Message);
      //MessageBox(0,'Anmeldung Fehlgeschlagen!','Login',MB_ICONERROR or MB_OK);
    end;
  end;

end;

Geändert von t0mmy (13. Sep 2011 um 07:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Einlesen aus Datenbank

  Alt 12. Sep 2011, 16:31
Mein Problem is es, das ich ein Loginfenster habe wo ich die Anmeldedaten aus einer MySQL Datenbank vergleiche.
Das ist schon ein Problem? Dann haben aber tausende anderer Programme auf der Welt dieselben Probleme. Im Ernst: was ist jetzt Deine Frage?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Einlesen aus Datenbank

  Alt 12. Sep 2011, 16:34
ADO und MYSQL funktioniert nicht (oder hast du einen Treiber gefunden?)
ADO ist für MSSQL gemacht.


datamod_formular.DataModule1.ADOQuery2_login.SQL.Text := 'Select Passwort from Benutzer where Vorname ='''+Edit1_Benutzername.Text+''''; Diese Zeile enthält eine SQL-Injection!

Besser ist wenn du mit Parametern arbeitest.
Das Passwort würde ich mit in die SQL-Bedingung als WHERE mit aufnehmen.
Dann brauchst du nur schauen ob es eine Zeile gibt oder nicht.

Best Practice:
Deine Passwörter sollten immer nur gehashed in der DB abgelegt sein. Sonst passiert es dir wie KM-Elektronik. 800.000 Kundendaten inkl. Passwörter gestohlen worden.


P.S.: wie ist deine Frage bzw. was ist das Problem?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Einlesen aus Datenbank

  Alt 12. Sep 2011, 16:43
Er hat keine Chance das PW zu vergleichen da es als Hash-Wert vorliegt??

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Einlesen aus Datenbank

  Alt 12. Sep 2011, 16:47
Wieso? MySQL unterstützt z.B. MD5 direkt.
SQL-Code:
SELECT
  COUNT(*)
FROM
  Benutzer
WHERE
  Vorname = :vorname
AND
  Passwort = MD5(:passwort)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Einlesen aus Datenbank

  Alt 12. Sep 2011, 18:14
Ein Blick auf den ConnectionString und ich verwette mein Abendbrot, dass es sich um MSSQL (Express-Version) handelt

Zum Prüfen des Kennworts bietet sich auch eine SP an.

Und natürlich nur den Hash übergeben ...
Wer sich fragt warum, der lässt einfach mal den Network Monitor mitlaufen und hat keine Fragen mehr
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Einlesen aus Datenbank

  Alt 12. Sep 2011, 18:37
OK, das ist ein Argument, den Connnectionstring hatte ich mir nicht angeschaut. Trotzdem bleibt die Frage: was ist eigentlich die Frage?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#8

AW: Einlesen aus Datenbank

  Alt 12. Sep 2011, 22:31
Und wenn schon ein Hash, dann bitte gesalzen Hier ein interessanter Artikel dazu.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#9

AW: Einlesen aus Datenbank

  Alt 13. Sep 2011, 07:14
Also bei ShowMessage(E.Message) bekomme ich ADOQuery1: Das Feld 'Passwort' wurde nicht gefunden -.-
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Einlesen aus Datenbank

  Alt 13. Sep 2011, 07:21
Und wieso nicht? Weil Du es wohl anders genannt hast, ich aber nicht wissen kann, wie es nun wirklich heißt
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz