Wie mach ich ein sicheres Login system in Java?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Mir ist schon klar wenn ihr jetzt eures Preisgebt das es dann nicht mehr sicher wär. 

Falsch.

Wenn dein Login-System auf "security by obscurity" beasiert, ist es richtig schlecht und sehr bedenklich.

Habe aber auch ein paar ganz grundsätzliche Hinweise:

https verwenden

http ist Thema Sicherheit einfach Müll. Aus mehreren Gründen.

Passwort hashen

Solltest niemals im Klartext Passwörter übertragen. Und auch nie Passwörter im Klartext in der Datenbank speichern.

Mit Authentifizierungs Token arbeiten

"das in java dann geprüft wird, " - kannst du dir sparen. Ein Java-Programm zu hacken und so eine Prüfung zu entfernen ist trivial.

Viel mehr solltest du einen Token zurückliefern, den du bei jedem künftigen Request mitsendest. Und Serverseitig überprüfst.

Authentifizierung nie clientseitig.

Und nun das wichtigste:

So etwas gar nicht selber implementieren.

Und immer zuerst Google fragen, ob es denn nicht etwas fertiges gibt. Habe keine persönliche Erfahrung, aber was spricht denn z.B. gegen so etwas (2 Minuten Google):

http://www.openrepose.org/

Gruß

Tuxgamer

Hey der Ansatz ist schon richtig. Du kannst so dann die einzelnen Funktionen mit einem Passwort schützen, welches für jeden Nutzer in der Datenbank hinterlegt ist. Bei einer Abfrage in Java kannst du dann über ein PHP Script entweder true oder false zurückgeben je nachdem, ob das Passwort richtig oder falsch ist.


thefungamer  03.07.2017, 21:59

ja, obfuscation bringt bei Java nur bedingt was. Aber die Serverseite ist ja Serverseitig programmiert und daher nicht vom Nutzer sichtbar.

0
Miki2015 
Beitragsersteller
 03.07.2017, 16:12

So wollte ich es eig auch machen und danach noch alles obfuscaten

0

Besser wäre, du würdest mit PHP arbeiten und die Login-Daten sicher (SSL-verschlüsselt; via PHP-Klasse; gehashed), aus einer Datenbank laden und mit den eingegebenen vergleichen.

Woher ich das weiß:Berufserfahrung – Software Engineer

Vorab: ich kann kein java aber will dir dennoch ein paar dinge sagen.

1. Die daten per GET zu übertragen ist eine blöde Idee. Verwende lieber POST

2. Du solltest https verwenden (da macht sich punkt 1 bemerkbar. Sonst da du keinen browser verwendest wärs egal wenns keine history gibt). Denk dran nicht einfach irgendeine cipher suite zu wählen bzw mehrere sondern schon nur die, die noch als sicher gelten.

3. Die sicherheit auf der basis das keiner den code kennt zu setzen ist eine blöde idee. Es kann den reverse engeneering prozess verzögern aber macht es nicht unbedingt vollautomatisch sicherer.