Login MySQL

  • Antworten:4
stan yng
  • Forum-Beiträge: 31

24.10.2013, 08:05:43 via Website

Hallo Leute,

ich möchte gerne das sichere Vorgehen in einem Login-Script verstehen.
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?

Jetzt zu der PHP Datei.

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

1$_db_host = "localhost";
2 $_db_datenbank = "datenbankname";
3 $_db_username = "mysql-username";
4 $_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.

Liebe Grüße Stan

Antworten
Andy N.
  • Forum-Beiträge: 3.112

24.10.2013, 11:06:51 via Website

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

Man legt gerne mal die Daten in eine extra Datei, alleine da man sie hier besser warten kann.
Bringt aber meiner Meinung keine Sicherheit, genau so wenig wie diese zu verschlüsseln.
Hat ein Angreifer Zugriff auf die PHP Scripte (zB durch Injection), kann er auch nachlesen, wie Du die Daten verschlüsselt hast.

Wichtiger ist es, sensible Daten in der Datenbank, wie zB Passwörter zu schützen. Passwörter zB immer nur als Hash-Wert, am besten mit Salt speichern.

Eine Authentifizierung sollte auch ein wenig aufwändiger sein, als nur Benutzernamen und Passwort zu schicken. Einmal sollte man immer die Verbindung verschlüsseln, sprich HTTPS verwenden.
Dann sollte man meiner Meinung immer ein Token-Basierendes Authentifizierungsverfahren verwenden. Denn der Anwender hat keine Lust ständig sein Passwort neu einzugeben und es ist auch keine gute Idee das Passwort auf dem Telefon zu speichern. Dafür gibt es zB folgende Möglichkeiten:

- OAuth:
Ist sehr sicher. Du kannst die Authentifizierung über einen 3. Anbieter abwickeln (zB Google, Yahoo, Twitter...) oder selbst OAuth anbieten.

- Ein (anderes) Token basierende Anmeldung über REST. Hier gibt es wieder zig Möglichkeiten, vermutlich ist die beste eine bestehende Lösung. Hier geht es aber immer darum Token nach einem bestimmten Protokoll auszutauschen, um sich zu authentifizieren.

Antworten
stan yng
  • Forum-Beiträge: 31

24.10.2013, 12:38:01 via Website

Andy N.


- OAuth:
Ist sehr sicher. Du kannst die Authentifizierung über einen 3. Anbieter abwickeln (zB Google, Yahoo, Twitter...) oder selbst OAuth anbieten.

Wenn ich es jetzt richtig verstanden habe, kann ich auch ein OAuth Anmeldungen anbieten?

Kostet mich das was, wenn ich es anbiete?

Und wie läuft das ab, wenn ich z.B. ein Login über Twitter mache, bekomme ich dann eine NutzerID? Damit ich Informationen über den Benutzer in meiner Datenbank speichern kann?

Bei AndroidPIT kann ich mich ja auch mit Facebook anmelden, dann müsste ja auch in einer DB meine Einträge gespeichert werden.

Antworten
Andy N.
  • Forum-Beiträge: 3.112

24.10.2013, 15:37:12 via Website

Willst du selbst oAuth anbieten gibt es zB eine php Erweiterung oder verschiedene Bibliotheken. Wie das genau funktioniert muss du dann dich genau erkundigen. Ist alles kostenlos, Dein Server muss es nur irgendwie unterstützen (je nach Voraussetzungen).
Du machst allerdings nur eine Anmeldung über OAuth und bietest diese nicht an. OAuth ist nur ein Protokoll.

Wenn Du es über einen 3. Anbieter machst, dann musst Du die ID (zB E-Mail) speichern. Dazu gibt es noch einen Token.
Aber Google erklärt zB recht gut, wie es funktioniert.

Nachtrag:
Ich hab noch ein Video rausgesucht:
http://www.youtube.com/watch?v=YLHyeSuBspI

— geändert am 24.10.2013, 15:40:11

Antworten
stan yng
  • Forum-Beiträge: 31

24.10.2013, 16:48:33 via Website

dann guck ich mir das mal genauer an. Waer ja schon wenn es so einfach geht.

Danke schon einmal für die Infos

Antworten