In einer Client-Server-Anwendung: Wie die DB der Anwendung des Benutzers Passwort schicken?

StackOverflow https://stackoverflow.com/questions/70170

Frage

Ich habe eine Java-Desktop-Anwendung Weicht verbindet direkt mit dem DB (ein Oracle). Die Anwendung verfügt über mehrere Benutzerkonten. Was ist die richtige Methode des Kennwort des Benutzers (nicht DB-Passwort) über das Netzwerk zu schicken? Ich will sie nicht im Klartext senden

War es hilfreich?

Lösung

Sie können eine sichere Socket-Verbindung eine Verbindung über oder die Passwort-Hash lokal, bevor sie in die Datenbank (oder besser, beide) zu senden - Im Idealfall das einzige Mal, das Kennwort existieren sollten in Klartextform ist vor Hashing. Wenn Sie all das auf der Client-Seite tun können, mehr desto besser.

Andere Tipps

Sie können SSL-Verbindung zwischen Oracle-Client und Oracle-Datenbank verwenden. So konfigurieren Sie SSL zwischen Oracle Client und Server mit 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=servername)(PORT=2484)))

WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/server/wallet/path/)))

Auf Client-Seite:

1) folgende Gläser benötigt Classpath sein ojdb14.jar, 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) Eigenschaften muss Nach eingestellt werden (entweder als Systemeigenschaft (-D-Optionen) oder Eigenschaften Anschluss)

javax.net.ssl.trustStore, 
javax.net.ssl.trustStoreType, 
javax.net.ssl.trustStorePassword

Referenz: http: // www .oracle.com / Technologie / tech / java / sqlj_jdbc / pdf / wp-oracle-jdbc_thin_ssl_2007.pdf

einverstanden ist, nie das Passwort sendet die Benutzer in Klartext gewählt haben. Doch kurz von Public-Key-Kryptographie verwenden, wenn Sie ihnen ein Passwort per E-Mail, es wird unverschlüsselt sein. Eine Sache, die ich je gesehen habe oft geschehen ist, dass, wenn der Benutzer das Passwort vergisst, und fordert sie auf, um sie gesendet werden, wobei das System ein neues Passwort erzeugt und sendet , die eine für den Benutzer. Der Benutzer kann dann das Passwort ändern.

Auf 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 sie ändern bald nach.

Wenn Sie nicht möchten, dass die Daten im Klartext senden, verwenden Sie Verschlüsselung !!!

Verwenden Sie einige Verschlüsselungsalgorithmus wie AES, Twofish etc.

Sie müssen auch berücksichtigen, wo Ihr Client und Server sind. Wenn sie beide in der gleichen Maschine sind, gibt es keine Verwendung einer Verschlüsselung. Wenn sie in verschiedenen Maschinen sind, verwenden einige Verschlüsselungsalgorithmus 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 funktioniert nur, wenn Sie das Passwort selbst vergleichen. Wenn eine andere Anwendung (außerhalb Ihrer Kontrolle) ist die Validierung Job, können Sie das Passwort-Hash.

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 eine Verbindung zu Oracle mit OR * Net Passwort Benutzern automatisch verschlüsselt (seit Oracle 8) aber es ist in manchen Situationen auf unverschlüsselte Passwörter zurückgreifen könnte. Dies kann mit ORA_ENCRYPT_LOGIN=true in der Umgebung des Client deaktiviert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top