Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   db afrage username und passwort (https://www.delphipraxis.net/197293-db-afrage-username-und-passwort.html)

strom 27. Jul 2018 11:55

Datenbank: firebird • Version: 3.0 • Zugriff über: table

db afrage username und passwort
 
hallo,

mochte über eine table(username) eine abfrage starten, für username und pasword.

Wie sollte sowas aussehen?

Delphi-Quellcode:
username.SQL.Text := 'Select * from USERNAME WHERE NAME = ' + QuotedStr(Edit1.Text) + ' AND PASSWORD = ' + QuotedStr(Edit2.Text);

Redeemer 27. Jul 2018 12:03

AW: db afrage username und passwort
 
Die Frage ist zu unspezifisch, was hast du vor?

himitsu 27. Jul 2018 12:29

AW: db afrage username und passwort
 
Passwörter niemals im Klartext speichern.

Deine Komponente kann bestimmt Parameter und die sollte man verwenden,
aber wenn nicht, dann sollte man unbedingt die "richtige" Excape-Funktion verwernden und QuotedStr ist da definitiv falsch, da es eine komplett andere Syntax benutzt.



Hashen und dann den Hash vor der Übertragung berechnen, also nicht erst im Query, nach dem das Passwort im Karltext durch's Netz lief.
SQL-Code:
SELECT * FROM username WHRERE name = :name AND password = md5(:salt + :name + :passwort);
Delphi-Quellcode:
Q.SQL.Text = 'SELECT * FROM username WHRERE name = :name AND password = :pass;';
Q.ParaByName('name').AsString := Edit1.Text;
Q.ParaByName('pass').AsString := md5(salt + Edit1.Text + Edit2.Text);
Q.Open

haentschman 27. Jul 2018 12:34

AW: db afrage username und passwort
 
Hallöle...:P

Du möchtest etwas lernen :zwinker: Dann sei nicht böse...:wink:
Zitat:

username.SQL.Text := 'Select * from USERNAME WHERE NAME = ' + QuotedStr(Edit1.Text) + ' AND PASSWORD = ' + QuotedStr(Edit2.Text);
...dabei rollen sich mir die Fußnägel hoch. :?

Begründung:
1. Der SQL Injection ist damit Tür und Tor geöffnet. Bitte verwende Parameter. :thumb: https://de.wikipedia.org/wiki/SQL-Injection
2. Niemals Benutzernamen und Passwörter im Klartext in die DB speichern. Beim Benutzernamen drücke ich ein Auge zu...aber beim Passwort nicht. Setze dich mal mit Verschlüsselung, auch wenn es nur eine leichte Verschlüsselung ist, auseinander.

:P

mkinzler 27. Jul 2018 12:56

AW: db afrage username und passwort
 
Noch besser gar keine Passwörter, sondern nur einen Hash (Obwohl ich heutzutage keinen MD5 mehr verwenden würde).

himitsu 27. Jul 2018 13:12

AW: db afrage username und passwort
 
Bei Hash's mache ich es inzwischen so, dass ich den Typ mit in den String einbaue.

Code:
md5:45453241513246
sha2a:454532415132461
Hash's kann man nich entschlüsseln, also lassen sich Passwörter nicht umkodieren, wenn man die Methode änder,
aber so kann man später etwas anderes einbauen und die alten Passwörter funktionieren weiterhin (kann man ja über ein Karenzzeit die Nutzer überreden das Passwort mal neu zu speichern, bzw. nach erfolgreichem Einloggen das Eingegebene im neuen Format neu speichern lassen)
Code:
sha2a:fdsfdsa:454532415132461
So kann man im selben Fehld auch gleich noch 'nen nutzerabhängigen Salt mit verpacken

strom 27. Jul 2018 15:09

AW: db afrage username und passwort
 
hallo,

haben hier ein problem bzw. fehlermeldung:

Dynamic SQL Error
SQL error code= -104
Token unknown -line 1, colum 31
name.



Delphi-Quellcode:
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
 with Form3 do begin

    Query.SQL.Text := 'SELECT * FROM BENUTZER WHRERE name = :name AND password = :pass;';
    Query.ParamByName('name').AsString := Edit1.Text;
    Query.ParamByName('pass').AsString := Edit2.Text;
    Query.Open;

 end;

 if Query.EOF then showmessage('Fehler')
  else form3.Show;

end;

haentschman 27. Jul 2018 15:10

AW: db afrage username und passwort
 
Zitat:

WHRERE
8-)

jobo 27. Jul 2018 15:11

AW: db afrage username und passwort
 
"Where " ist Statement falsch geschrieben.

mkinzler 27. Jul 2018 15:19

AW: db afrage username und passwort
 
Zusätzlich ist NAME ein reserviertes Wort. Entwder excapen

SQL-Code:
... where "name" = :name ...
oder besser username o.ä. verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.
Seite 1 von 3  1 23      

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