Wie mach ich ein sicheres Login system in Java?
Mir ist schon klar wenn ihr jetzt eures Preisgebt das es dann nicht mehr sicher wär. Aber so ein par sachen die ich beachten muss oder code schnipsel... Also wie ich es gemacht hätte: Java geht mit ner UrlConnection auf eine website sagen wir www.test.de/login.php?user=test&pw=123&hwid=111 und das pho script prüft erstmal mysql injection und geht dann auf eine mysql datenbank und gleicht das ganze ab und gibt ein statement zurück das in java dann geprüft wird, falls du jetzt nicht genau weist wie ich es mein nochmal kommentieren! Also was könnte ich noch verbessern oder ist der ansatz komplett schlecht ? Lg ~Michael
4 Antworten
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):
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.
ja, obfuscation bringt bei Java nur bedingt was. Aber die Serverseite ist ja Serverseitig programmiert und daher nicht vom Nutzer sichtbar.
So wollte ich es eig auch machen und danach noch alles obfuscaten
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.
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.