Passwort über server abfragen
-
Hallo
hat einer von euch eine idee wie man ein passwort + username über einen server abfragen kann?
der server steht schon und ist mit einer mysql db verbunden.
client ebenfalls und nimmt verbindung mit dem server aufwie könnte man es jetzt realiesieren das der client an den server das eingegebene pw und den username sendet der server diese mit der db abgleicht und dann einen bool an den client sendet
ich hoffe ihr könnt mir helfen
MFg benny
-
Mit Sockets.
-
wie geschrieben die verbindung steht alles schon also konnte man einfach über listen und send die daten übertragen und abgleichen.
was ist aber wenn jetzt mehere zum selben zeitpunkt abfragen tätigen?
hengt der server dann?
-
Diese Info solltest du in der MySQL/API Doku finden.
-
benny_XDD schrieb:
der server steht schon und ist mit einer mysql db verbunden.
client ebenfalls und nimmt verbindung mit dem server aufwie könnte man es jetzt realiesieren das der client an den server das eingegebene pw und den username sendet der server diese mit der db abgleicht und dann einen bool an den client sendet
Da man bei sowas viel falsch machen kann, wenn man sich nicht auskennt, ist das schonmal gut, dass du fragst. Das ist eigentlich so wichtig, dass Richtlinien gut dokumentiert sein sollten. Ich kenne mich zwar mit Crypto aus, habe aber so etwas nie machen müssen und kann dich auch an nichts verweisen, es nur mit meinen eigenen Worten erklären.
Typischerweise macht man das so, dass die Passwörter gar nicht im Klartext in der Datenbank gespeichert werden. Das hat den großen Vorteil, dass ein Angreifer, der die Datenbank auslesen kann, die Passwörter der User nicht (so leicht) rausfinden kann. Die Verbindung zwischen Server und Client sollte eine SSL/TLS-Verbindung sein, weil der Benutzer das Passwort an den Server schicken muss, damit er es auf Richtigkeit überprüfen kann und keiner sonst den Datenverkehr mitlesen kann. Das ist z.B. ganz wichtig, wenn du dich in einem öffentlichen WLAN befindest und Leute mitsniffen. Das, was der Server vom Passwort speichert, muss also für einen solchen Test reichen. Jetzt könnte ein Angreifer, der doch irgendwie die Datenbank auslesen konnte, aber für sich alle möglichen Passwörter durchprobieren, bis er eins findet, das denselben Test besteht. Da Passwörter typischerweise nicht so lang sind, sollte eine einzelne Überprüfung eine gewisse Zeit kosten; denn sonst kann man die zu schnell durchprobieren. Mit bcrypt hast du ein Verfahren, mit dem du Informationen über ein Passwort auf eine Art speichern kannst, die nur einen solchen Authentifizierungstest erlaubt, aber die Zurückgewinnung des User-Passwortes extrem rechenaufwändig ist.
Im Kopf behalten:
- Client-Server-Verbindung verschlüsseln
- Passwörter serverseitig nicht im Klartext speichern, sondern als "kryptographische Prüfsumme", wobei die Prüfsumme nicht zu schnell berechenbar sein sollte und auch von Zufallsbits (Salz) abhängen sollte, die man neu wählt, wenn ein Passwort zu einer Prüfsumme umrechnet. Die Zufallsbits muss man natürlich auch speichern.
- Das Salz an sich verhindert einen Angriff über Rainbow-Tables. Ist das Salz benutzerabhängig, kann man die Passwörter von allen Nutzern auch nicht mehr parallel knacken, sondern muss sie sich einzeln vornehmen.
Das hat aber mit C++ wenig zu tun und gehört eher in das "Rund um die Programmierung"-Subforum.
-
benny_XDD schrieb:
hat einer von euch eine idee wie man ein passwort + username über einen server abfragen kann?
Ja.
benny_XDD schrieb:
ich hoffe ich könnt mir helfen
Nein.