Login Mysql

PSP_GIGA

Cadet 3rd Year
Registriert
Jan. 2011
Beiträge
57
Hallo Leute,

ich möchte gerne das sichere Vorgehen in einem Login-Script verstehen.

Es soll für Anwendungen am PC Webbasierend und auf Smartphones sein.

Und zwar, wenn ich eine Verbindung von meinem Gerät zu einer MySQL Datenbank aufbaue benutz ich nach meiner Denkweise eine php Datei die auf die MySQL Datenbank zugreift und dann die Userdaten wie Username und Passwort ausließt, diese dann an mein Gerät zurück gibt (z.B. ein true).

Ist das soweit richtig?

Wenn ja, welche Verbindungsart benutze ich? Https? oder Soap? Was ist die beste und sicherte Lösung?

Mit welchen Dienst kann ich die Daten dann verschlüsselt, die von meinem Datenbankserver auf mein Gerät geschickt werden?

Dann gibt es ja noch OAuth. Kann ich da selber eine Login-Schnittstelle erstellen? Sollte ich es benutzen?


Jetzt zu der PHP Datei.

In der PHP Datei habe ich ja die Verbindungsdaten zur Datenbank z.B.

PHP:
 $_db_host = "localhost"; 
 $_db_datenbank = "datenbankname";
 $_db_username = "mysql-username";
 $_db_passwort = "mysql-passwort";

sollten diese möglichst in eine extra PHP Datei verlagert werden, auf die ich dann immer zugreife? und diese auch verschlüsselt?

Oder kann ich diese Datei auf meinem Server vor Fremdeingriffen sperren?

Ich habe mir dann gedacht das ich jeweils in einem Hash und Salt mein Passwort abspeichere.
Dann reicht es mir ja, wenn der Benutzername und Passwort übereinstimmen einfach ein true zurück geben zu lassen, oder?

Wenn ich das jetzt alles habe, wie speicher ich es so auf dem Gerät, das der Benutzer immer eingeloggt ist, wenn er die App startet? Muss ich dafür ein Token übergeben? oder wo hinterlege ich die Informationen welche User angemeldet ist oder ob er überhaupt angmeldet ist?

Ich hoffe es waren nicht zu viele Fragen, würde aber gerne den Hintergrund verstehen.

Grüß PSP_GIGA
 
Jegliche Suchmaschinen liefern dir dazu Unmengen an Hilfe und Threads die dies sehr ausführlich behandeln.
Dazu muss doch nicht extra ein Neuer auf gemacht werden oder?

Tutorials und Hilfe gibt es genug, ich habe selbst erst vor einem Jahr das Ganze selbst erlernt!
 
Und zwar, wenn ich eine Verbindung von meinem Gerät zu einer MySQL Datenbank aufbaue benutz ich nach meiner Denkweise eine php Datei die auf die MySQL Datenbank zugreift und dann die Userdaten wie Username und Passwort ausließt, diese dann an mein Gerät zurück gibt (z.B. ein true).

Wenn du die URL http://website.com/login.php in deinen Browser eingibst, dann zeigt diese URL auf die Datei login.php auf deinem Webserver. In dieser Datei ist dann die Logik für den Verbindungsaufbau mit der Datenbank geschrieben. Es gibt in PHP 3 Möglichkeiten, mit Datenbanken zu kommunizieren: mysql, mysqli und PDO. Erstere ist veraltet und unsicher, also Finger weg! Nachdem die Verbindung steht, kannst du SQL-Befehle mitgeben und die Ergebnisse, welche aus der DB zurückkommen, einer Variablen speichern (oft auch als Array, wenn es mehrere Datensätze sind). Mit den Daten in dieser Variablen kannst du dann machen, was du willst.

Wenn ja, welche Verbindungsart benutze ich? Https? oder Soap? Was ist die beste und sicherte Lösung?
Welche Verbindung meinst du? Die zwischen PHP und Datenbank oder zwischen Client (Browser) und Webserver? Ersteres: siehe oben. Letzteres: HTTP oder HTTPs, abhängig von dem, was benötigt wird. HTTPs ist verschlüsselt und daher sicherer.

sollten diese möglichst in eine extra PHP Datei verlagert werden, auf die ich dann immer zugreife? und diese auch verschlüsselt?
Ist Geschmackssache. Bei größeren Applikationen bietet es sich an, eine config.php mit genau solchen Daten anzulegen, damit es übersichtlicher ist. Über require 'config.php' kannst du dir die Variablen dann in jede beliebige andere Seite laden und damit arbeiten. Verschlüsselt habe ich meine Zugangsdaten zur DB noch nie.

Oder kann ich diese Datei auf meinem Server vor Fremdeingriffen sperren?
Normalerweise kommt man an diese Daten, sofern sie nicht gerade ausgegeben werden, nicht heran. Du kannst deine config.php, sofern du eine anlegst, optional aber per .htaccess schützen.

Ich habe mir dann gedacht das ich jeweils in einem Hash und Salt mein Passwort abspeichere.
Dann reicht es mir ja, wenn der Benutzername und Passwort übereinstimmen einfach ein true zurück geben zu lassen, oder?
Eher sollte es so sein, dass du das eingebene Passwort, etwa von einem Loginformular, mit dem in der Datenbank gespeicherten Passwort bei diesem User vergleichst. Wenn es übereinstimmt, dann kannst du etwa an eine andere Seite weiterleiten. Dafür reicht im Grunde eine einfache if-Abfrage.

Wenn ich das jetzt alles habe, wie speicher ich es so auf dem Gerät, das der Benutzer immer eingeloggt ist, wenn er die App startet?
Cookies.
 
Speedy. schrieb:
Verschlüsselt habe ich meine Zugangsdaten zur DB noch nie.
Anders: Es ist nicht möglich, die Zugangsdaten zu verschlüsseln bzw. dann müsste man den Schlüssel zu dieser Verschlüsselung irgendwo im Klartext ablegen, damit PHP an die Daten kommt.

Eher sollte es so sein, dass du das eingebene Passwort, etwa von einem Loginformular, mit dem in der Datenbank gespeicherten Passwort bei diesem User vergleichst.
Es wird NIE NIE NIE das Passwort in der Datenbank gespeichert, immer nur ein starker Einmal-Hash. MD5/SHA-1 mit Salt ist ein Ansatz (ohne Salt könnt man auch gleich Klartext speichern), deutlich effizienter resp. sicherer ist aber z.B. die PHP-eigene Crypt-API mit bcrypt.
 
das sind doch schonmal ein paar Informationen mit denen ich gut was anfangen kann. Vielen Dank :)
 
Zurück
Oben