Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Login über MySQL (https://www.delphipraxis.net/139764-login-ueber-mysql.html)

RedShakal 4. Sep 2009 20:21

Datenbank: MySQL • Zugriff über: PHP

Login über MySQL
 
Hallo, ich habe ein Login Script geschrieben für mein Programm. Momentan funktioniert das so:

Client logt sich ein => Daten an Server
Server gibt Antwort OK / Logindaten falsch => Client reagiert.

Die Daten sind in einer ini Datei gespeichert.
Jetzt möchte ich das ganze über die MySQL Datenbank vom Webserver machen. Ich möchte die Datenbank aber aus Sicherheitsgründen nicht direkt ansteuern sondern ein PHP Script was z.b. OK oder Falsch ausgibt wenn man es mit bestimmten Parametern aufruft.

Check.php?username=123&passwort=123&version=2.1

so z.b.

Das Problem: Ich will nicht das jemand das mitsniffen kann mit Wireshark oder anderen und mit einem Paketsender die Pakete fakt.
Das heißt ich müsste das OK verschlüsseln. Das Problem dabei ist: selbst wenn ich das verschlüssle, kommt immer wieder der gleiche Hash beim Login bei raus weil es ja nur richtig oder falsch gibt. Gibt es da eine möglichkeit das zu unterbinden oder vielleicht sogar eine bessere alternative?

mkinzler 4. Sep 2009 20:26

Re: Login über MySQL
 
über https(SSL).
Zudem würde ich nicht das Passwort, sondern einen Hash senden

RedShakal 4. Sep 2009 21:02

Re: Login über MySQL
 
und was ist bei ssl anders? wenn ich einen hash schicke, muss ich ja das passwort clientseitig crypten und durch php wiededer entcrpten. Das Problem ist das meine php Kenntnisse nicht sooo berauschend sind. Ausserdem löst es ja noch immer nicht das Problem, das der Server immer nur 2 Antworten zurück gibt ( Ja / Nein ). Ich möchte ja verhindern das man durch Cheat Engine noch durch Wireshark / WPE die Login Sequenz überspringen kann.

mkinzler 4. Sep 2009 21:06

Re: Login über MySQL
 
Zitat:

und was ist bei ssl anders?
Bei SSL handeln Client und Server einen Session-Key aus, der zudem wechselt- Mit diesem wird die Kommunikation dann gesichert

Die Muhkuh 4. Sep 2009 21:13

Re: Login über MySQL
 
Wenn Du den Hash sendest, musst Du nicht mehr decrypten, was sowieso nicht geht. Einfach gucken, ob der geschickte Hash mit dem Hash des Passwortes übereinstimmt.

himitsu 4. Sep 2009 21:34

Re: Login über MySQL
 
Wenn schon nicht SSL, dann wenigstens via SALT gehaschte Passwörter.

Also vorher bekommt der Client eine Sequenz geschickt, zusammen mit dieser wird das Passwort gehasht,
welches dann bei einem gleichbleibendem Passwort jedesmal ein anderer Hash generriert wird.

Es wird also das belauschen des Passwortes erschwert und es bringt nix, wenn jemand diesen Hash mitloggt und ihn (den Hash) dann für eine eigene Anmeldung mißbrauchen ist so nicht mehr möglich, da der Hash ja nur einmal gültig ist und sich zusammen mit dem sich änderntem SALT vom Server verändert.

RedShakal 4. Sep 2009 23:59

Re: Login über MySQL
 
Wie genau würde das denn mit SSL funktionieren? Habe noch nicht damit gearbeitet. Muss man da was spezielles beachten?

mkinzler 5. Sep 2009 06:59

Re: Login über MySQL
 
Der Webserver muss dass unterstützen

Phoenix 5. Sep 2009 09:55

Re: Login über MySQL
 
Ich hole da mal etwas weiter aus.

SSL wird immer dann benutzt, wenn Du eine URL mit https:// am Anfang aufrufst.
Der Webserver muss SSL unterstützen (es gibt eigentlich keine, die das nicht tun) und benötigt für diese IP-Adresse und die URL ein Zertifikat. Das kostet Geld, wenn man ein richtiges haben will. Man kann die auch selber machen (self-signed certificate) und das kostet dann nichts - aber dann wird der Browser eine Fehlermeldung anzeigen, dass das Zertifikat nicht von einer gültigen Stelle (z.B. VeriSign) signiert wurde und fragt beim Benutzer nach, ob man dem Server wirklich vertraut.

Da Du aber nicht mit einem Browser dorthin connectest sondern mit einem eigenen Client kannst Du hier den Benutzer aussen vor lassen.

SSL sorgt nun dafür, dass die gesamte Verbindung mit dem Webserver verschlüsselt wird. Und der Key wechselt bei jedem Besuch der Seite.

Das heisst, die Verbindung zwischen Deinem Client und dem PHP-Script ist komplett verschlüsselt. Man kann weder den Benutzernamen noch die Antwort des Webservers auslesen oder auch nur kopieren, weil sich der Key ja immer ändert.

RedShakal 9. Sep 2009 21:14

Re: Login über MySQL
 
Ich habe jetzt ein bisschen rumexperimentiert. Dafür habe ich dieses Script verwendet:

Delphi-Quellcode:
<?php

if($_REQUEST['user']!='test')
{
echo "Username falsch!";
exit;


if($_REQUEST['pw']!='test')
{
echo "Passwort falsch!";
exit;


echo "Login erfolgreich"

?>
Von der Delphi Seite her klappt zurzeit alles Problemlos. Woran es scheitert ist ein PHP Script, welches die SQL Datenbank über PHP ausliest.

Hat jemand was ähnliches fertig=


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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