Wie speichert man Benutzernamen und Passwörter in eine Datenbank?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wichtig ist, dass du die Passwörter auch verschlüsselst, und nicht einfach in eine Tabelle schreibst! Du brauchst dazu eine Datenbank und musst mit z.B php eine Verbindung aufbauen (mit dem Datenbanknamen und dem Passwort) Dann kannst du mittels z.B sql die Daten verwalten und neue speichern.

Ist ziemlich kompliziert, genau kann ich es dir leider nicht erklären..

(hab das vor nem Jahr 1x versucht und habe es nur mit 100 tutorials und mehreren Zeilen code geschafft, von denen ich manches nicht ganz verstehe)

Ich würde, wenn du dir sicher bist, dass du das machen willst. Dich durch Tutorials auf Youtube wühlen.. Stichwort sql/Datenbanken/Verschlüsseln

franzhartwig  22.01.2022, 12:40
Wichtig ist, dass du die Passwörter auch verschlüsselst,

Passwörter werden, wenn es um Sicherheit geht, nicht verschlüsselt. Es werden Hashwerte gebildet.

0
CrazyChicken334  22.01.2022, 12:43
@franzhartwig

Ein Hash ist keine Verschlüsselung!

Hashfunktionen werden häufig verwendet, um sensible Daten zu schützen. ... Ein wesentlicher Unterschied besteht darin, dass eine Hashfunktion nicht invertierbar ist.

Tut mir leid, ich habe das jetzt zur vereinfachung verschlüsselung genannt..

Aber es ist dennoch sehr wichtig

1
franzhartwig  22.01.2022, 12:43
@CrazyChicken334
Ist die Hash keine Form der verschlüsselung?

Nein. Eine Hashfunktion erzeugt eine Prüfsumme mit festgelegter Länge. Die Funktion ist nicht umkehrbar. Eine Verschlüsselung ist umkehrbar. Das ist ein wesentlicher Unterschied.

1
franzhartwig  22.01.2022, 12:46
@CrazyChicken334
Ein  Hash ist keine  Verschlüsselung!

Habe ich jemals etwas anderes behauptet?

Hashfunktionen werden häufig verwendet, um sensible Daten zu schützen. ... Ein wesentlicher Unterschied besteht darin, dass eine Hashfunktion nicht invertierbar ist.

Das hast Du sehr schön hier herauskopiert:

https://www.security-insider.de/was-ist-ein-hash-a-635712/

Tut mir leid, ich habe das jetzt zur vereinfachung verschlüsselung genannt..

Das ist keine Vereinfachung, sondern schlicht falsch.

Aber es ist dennoch sehr wichtig

Was ist wichtig? Passwörter zu verschlüsseln?

0

Hey,

typischerweise speichert man die Passwörter gar nicht als Klartext ab.
Oftmals kommen dort einfach Hashing-Verfahren zum Einsatz.
Gepspeichert wird dann nur der Hash des Passworts und nie das Passwort selbst.
Nur wenn der Benutzer das richtige Passwort eingibt wird der Hash erzeugt, welcher auch in der Datenbank persistiert ist.
So vermeidet man, dass Passwörter geklaut werden. Denn aus dem Hash kann man nicht das Originalpasswort generieren (Rainbowtables sind allerdings ein Angriff).

Was die Datenbank angeht ist MySQL besonders im Hobbybereich sehr beliebt und verbreitet. Aber auch DBs wie SQLite sind sehr interessant für dich, da dies nicht extra installiert werden muss. SQLite besteht die gesamte Dantbank nur aus einer einzigen Datei und die ganze Arbeit wird vom Datenbankverbindungs-Treiber erledigt. Es existiert also kein eigener DB Prozess. Für ein kleineres Projekt perfekt. Extrem schnell aufzusetzen und die Performance ist für kleinere Themen völlig okay.

Gruß und viel Spaß

franzhartwig  22.01.2022, 12:42
So vermeidet man, dass Passwörter geklaut werden. Denn aus dem Hash kann man nicht das Originalpasswort generieren (Rainbowtables sind allerdings ein Angriff).

Dagegen hilft eine geeignete Hash-Funktion und vor allem ein Salz.

1
AldoradoXYZ  22.01.2022, 12:44
@franzhartwig

Salzen ist immer gut. Aber wer so weit kommt seine Passwörter zu hashen, der wird wohl auch noch salzen :D

Davon abgesehen klingt das Projekt vom Fragesteller so, dass auch das Salzen nicht nötig sein wird. Aber ja, als Übungsprojekt sollte man das im Grunde auch schon machen.

Gruß

0
franzhartwig  22.01.2022, 12:48
@AldoradoXYZ
Salzen ist immer gut. Aber wer so weit kommt seine Passwörter zu hashen, der wird wohl auch noch salzen :D

Wenn Du das voraussetzt, brauchst Du keine Regenbogentabellen mehr zu erwähnen.

Davon abgesehen klingt das Projekt vom Fragesteller so, dass auch das Salzen nicht nötig sein wird.

Doch, denn das Thema war ja Sicherheit. Bei dem kleinen Spielprojekt ist eine Datenbank wie MySQL oder Sqlite überflüssig. Da reicht eine Textdatei. Eine Datenbank benötigst Du nur für Skalierbarkeit.

1
Leitach 
Fragesteller
 22.01.2022, 22:19

Ich habe jetzt eine Sqlite Datenbank erstellt. Wie kann ich auf Javascript jetzt aber auf diese zugreifen?

0
AldoradoXYZ  23.01.2022, 00:52
@Leitach

Moment, läuft dein JavaScript server- oder client-seitig?

Du musst die DB serverseitg "laufen" lassen. Das heißt die SQLite Datei liegt serverseitig und nicht beim Client. Und dann solltest Du einen extra Prozess (von mir aus auch JavaScript) serverseitig laufen lassen, welcher auf die DB zugreift. Bloß nicht direkt vom client aus auf die DB zugreifen, dann kann dir ja jeder auf die DB zugreifen, der sich den Client mal anguckt.

Gruß

0
Ich denke aber, dass das nicht gerade sicher ist. Deshalb wollte ich eine Datenbank erstellen.

Eine "Liste" ist auch eine Datenbank. Das Speicherformat macht nicht die Sicherheit aus. Die Sicherheit macht aus, wie das Passwort gespeichert wird - nämlich nicht im Klartext, sondern in Form eines Hashwertes, den Du mittels geeigneter Hashfunktion inklusive Salz ermittelst.

Ob Du eine einfache textbasierte Liste verwendest oder eine Datenbank, ist eine Frage der Skalierbarkeit. Bei einem kleinen Privatprojekt ist Skalierbarkeit jedoch kein Kriterium.

Kennst du dich mit PHP und MySQL/SQL aus? Das wäre die einfachste und schnellste Lösung.

  • Datenbank erstellen -> Tabelle mit Spalten anlegen (auto_increment etc. nicht vergessen)
  • Registrierung erstellen (Fehlerbehandlung, Passwort hashen und prepared statements nicht vergessen)
  • Login erstellen (Fehlerbehandlung und prepared statements nicht vergessen)

Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt. Benutz bcrypt.

Spaß beiseite… Benutz' einfach bcrypt.

Woher ich das weiß:Berufserfahrung