Ich habe eine Java-Desktop-Anwendung, die direkt mit der DB (ein Oracle) verbindet. Die Anwendung verfügt über mehrere Benutzerkonten. Was ist die richtige Methode, um das Passwort des Benutzers (nicht DB-Passwort) über das Netzwerk zu senden? Ich will sie nicht im Klartext sendenIn einer Client-Server-Anwendung: Wie wird das Anwendungskennwort des Benutzers an die Datenbank gesendet?
Antwort
Sie können eine Verbindung über eine sichere Socket-Verbindung herstellen oder das Kennwort vor dem Senden an die Datenbank hashen (oder besser beides). Im Idealfall sollte das Kennwort vor dem Hashing nur in Klartextform vorliegen. Wenn Sie all das auf der Client-Seite tun können, desto besser.
Wenn Sie die Daten nicht im Klartext, verwenden Verschlüsselung senden möchten !!!
einige Verschlüsselungsalgorithmus verwenden wie AES, Twofish usw.
Sie müssen auch berücksichtigen, wo Ihr Client und Server sind. Wenn sie sich beide in derselben Maschine befinden, ist es nicht sinnvoll, eine Verschlüsselung zu verwenden. Wenn sie sich auf verschiedenen Computern befinden, verwenden Sie einen Verschlüsselungsalgorithmus, um sensible Daten zu senden.
Wenn Sie die Gültigkeit der Passwörter überprüfen, können Sie einfach den Hash des Passworts senden. Beachten Sie, dass diese Methode nur funktioniert, wenn Sie das Passwort selbst vergleichen. Wenn eine andere Anwendung (außerhalb Ihrer Kontrolle) den Überprüfungsauftrag ausführt, können Sie das Kennwort nicht hashen.
einverstanden ist, nie im Nur-Text wählte der Benutzer das Passwort. Wenn Sie jedoch die Verschlüsselung mit öffentlichem Schlüssel verwenden, wird Ihnen ein Kennwort in Klartext angezeigt. Eine Sache, die ich oft gesehen habe, ist, dass, wenn der Benutzer das Passwort vergisst und es an sie gesendet wird, das System ein neues Passwort generiert und dieses an den Benutzer sendet. Der Benutzer kann dann das Passwort ändern.
diese Weise das Passwort der Benutzer wählen (die der Benutzer möglicherweise an anderer Stelle verwendet) wird nie gesendet, während ihr vorläufiges Passwort unverschlüsselt gesendet wird, sollten sie es bald nach ändern.
Sie können eine SSL-Verbindung zwischen Oracle-Client und Oracle-Datenbank verwenden. So konfigurieren Sie SSL zwischen Oracle-Client und dem Server mithilfe von JDBC:
Auf Server-Seite:
1) Zunächst einmal muss der Hörer konfiguriert werden, um das TCPS Protokoll zu verwenden:
LISTENER = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCPs) (HOST = Server) (PORT = 2484)))
WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY =/Server/Mappe/path /)))
Auf Client-Seite:
1) folgenden Gläser benötigt classpath ojdb14.jar sein, oraclepki.jar, ojpse.jar
2) URL für die Verbindung verwendet wird, sollte sein: jdbc: Oracle: thin: @ (DESCRIPTION = (ADDRESS = (PROTOCOL = tcps) (HOST = Servername) (PORT = 2484)) (CONNECT_DATA = (SERVICE_NAME = Servicename)))
3) Folgende Eigenschaften müssen festgelegt werden (entweder als Systemeigenschaft (-D Optionen) oder Eigenschaften zum Anschluss) javax.net.ssl.trustStore, javax.net.ssl.trustStoreType, javax.net.ssl.Truststor
Referenz: http://www.oracle.com/technology/tech/java/sqlj_jdbc/pdf/wp-oracle-jdbc_thin_ssl_2007.pdf
Wenn Sie direkt ohne Zwischenschicht an die DB zu verbinden, sollten Sie einen DB-Benutzer für jeden realen Benutzer betrachten verwenden, denn sonst kann man nicht wirklich den Zugriff der Anwendung sichern.
Wenn Sie mit ORa * Net eine Verbindung zu Oracle herstellen, wird das Benutzerkennwort automatisch verschlüsselt (seit Oracle 8). In einigen Situationen kann es jedoch auf unverschlüsselte Kennwörter zurückgreifen. Dies kann mit ORA_ENCRYPT_LOGIN=true
in der Umgebung des Clients deaktiviert werden.
- 1. Wie man das Geld des Benutzers in der Datenbank speichert?
- 2. Formular wird nicht an die Bean gesendet
- 3. Wie erhält man die Geolokalisierung des Benutzers?
- 4. Wie wird java.util.logging an log4j gesendet?
- 5. Wie wird java.util.logging an log4j2 gesendet?
- 6. Was passiert, wenn während einer Signalverarbeitung in UNIX das gleiche Signal an das Programm gesendet wird?
- 7. Warum wird das nicht an meinen mysql Server gesendet?
- 8. Wie wird die Audioausgabe an Apple TV gesendet?
- 9. Bilddaten werden an die Datenbank gesendet, aber die Datei wird nicht auf den Server hochgeladen
- 10. Wie wird die Ablaufverfolgungsausgabe an eine Datei im Dateisystem gesendet?
- 11. Wie wird die Kamera an den aktuellen Standort des Benutzers verschoben, wenn die Karte in Google Maps V2 geladen wird?
- 12. Übergeben Sie die Sitzung des Benutzers an verschiedene Aktivitäten.
- 13. Wie ändere ich das Passwort des Root-Benutzers in MySQL?
- 14. Wie die ID der Schaltfläche zum Befehl gesendet gesendet wird?
- 15. Verwalten des Sitzungsstatus eines Benutzers in einer ASP.NET MVC-App, die auf einer Webfarm gehostet wird
- 16. Wie bekomme ich das Gebietsschema des Benutzers in Objective-C?
- 17. Nachricht an freigegebene Instanz gesendet
- 18. Objective-c - An- und Abmeldezeit des Benutzers
- 19. Moodle, wie die Rolle des angemeldeten Benutzers
- 20. Die WLAN-Verbindung wird nach der Inaktivitätszeit des Benutzers unterbrochen
- 21. Wie Serveranfrage an vorletzten Artikel gesendet wird, kommt in Listview?
- 22. Wie wird ein 2D-Array an eine Funktion gesendet?
- 23. Wird die URL-Fragmentkennung an den Server gesendet?
- 24. Wie wird ein data.frame von R an Q/KDB gesendet?
- 25. HTML5: Wie wird ein Formular gesendet, nachdem die Eingabetaste an einer der Texteingaben gedrückt wurde?
- 26. Öffnen eines Popup-Fensters, das auf die Bildschirmkonfiguration des Benutzers maximiert wird
- 27. Android-Absturzbericht wird nicht an die Entwicklerkonsole gesendet
- 28. Wie wird ein HTML-Formular an eine Exe-Anwendung gesendet?
- 29. Eine Nachricht protokollieren, die an nil gesendet wird?
- 30. Wie programmiere ich programmgesteuert das Protokollierungsverzeichnis des Benutzers?
Genau. Jeder Server, der in der Lage ist, Ihnen Ihr vergessenes Passwort per E-Mail zuzusenden, a) speichert sie nicht sicher und b) kennt sich nicht mit der Serversicherheit aus ... Wenn Sie eine E-Mail mit dem Passwort im Klartext senden, werden Sie kompromittiert. – ajacian81