Domanda

Ho un desktop Java applicazione che si connette direttamente con il DB (Oracle).L'applicazione dispone di più account utente.Qual è il metodo corretto per inviare la password dell'utente (non in DB password) attraverso la rete?Non voglio inviarlo in formato testo normale

È stato utile?

Soluzione

Si potrebbe connettersi tramite una connessione protetta, o l'hash della password in locale prima dell'invio al database (o meglio, due) - Idealmente, l'unica volta che la password deve esistere in formato solo testo è prima di hashing.Se si può fare tutto, lato client, più sono e meglio.

Altri suggerimenti

È possibile utilizzare SSL connessione tra client Oracle e database Oracle.Per configurare SSL per le comunicazioni tra client e server oracle utilizzando JDBC:

Lato server:

1) Prima di tutto, l'ascoltatore deve essere configurato per utilizzare il protocollo TCP:

LISTENER = (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcps)(HOST=servername)(PORT=2484)))

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

A lato client:

1) a seguito di vasi deve essere classpath ojdb14.jar, oraclepki.jar, ojpse.jar

2) l'URL utilizzato per il collegamento dovrebbe essere:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=servername)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=servicename)))

3) a Seguito di proprietà deve essere impostata (sia come proprietà di Sistema (opzioni-D) o le proprietà di connessione)

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

Riferimento: http://www.oracle.com/technology/tech/java/sqlj_jdbc/pdf/wp-oracle-jdbc_thin_ssl_2007.pdf

Concordato, non inviare mai la password che l'utente ha scelto come testo normale.Tuttavia, a meno di usare la crittografia a chiave pubblica, se si e-mail di una password, che sta per essere in chiaro.Una cosa che ho visto spesso accadere è che quando l'utente dimentica la password e le richieste di invio a loro, il sistema genera una nuova password e invia che uno per l'utente.L'utente può modificare la password.

In questo modo, la password che l'utente ha scelto (che l'utente può utilizzare altrove) non è mai inviato, mentre la loro temporanea password viene inviata in chiaro, si dovrebbe cambiare poco dopo.

Se non si desidera inviare i dati in formato testo, utilizzare la crittografia !!!

Utilizzare alcuni algoritmo di crittografia come AES, Twofish, etc.

Si deve anche prendere in considerazione in cui il client e il server.Se entrambi sono nella stessa macchina, non c'è uso di utilizzando un algoritmo di cifratura.Se sono macchine diverse, utilizzare alcuni algoritmo di crittografia per l'invio di dati sensibili.

Se SI sta controllando la validità della password, è possibile inviare l'hash della password.Attenti che questo metodo funziona solo se si confrontano le password.Se qualche altra applicazione (fuori controllo) sta facendo la validazione di lavoro, non è possibile l'hash della password.

Se si collega direttamente al DB senza strato intermedio, si dovrebbe considerare l'utilizzo di un DB utente per ogni utente reale, perché altrimenti non si può davvero sicuro l'accesso dell'applicazione.

Se la connessione a Oracle con ORa*Net la password dell'utente viene automaticamente crittografati (dal Oracle 8) tuttavia potrebbe ricadere le password in chiaro in alcune situazioni.Questo può essere disabilitato con ORA_ENCRYPT_LOGIN=true nell'ambiente del cliente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top