在客户机-服务器应用程序:怎么送到该数据库用户的应用程序的密码?

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

我有一个Java桌面应用程序,直接连接的数据库(Oracle).该应用程序有多个用户账户。什么是正确的方法发送用户密码(不DB password)通过网络?我不想送它在纯文本

有帮助吗?

解决方案

你可以连接在一个安全的连接,或者散的密码之前,本地发送数据库(或者更好,既)-理想的情况下,唯一的一次密码,应该存在于纯文本形式是前哈希。如果你可以做所有这一切在客户方面,越多越好。

其他提示

你可以使用SSL之间的连接Oracle客户和Oracle数据库。配置SSL之间oracle客户和服务器使用JDBC:

在服务器的一面:

1)首先,听者必须配置使用的TCPS协议:

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

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

在客户面:

1)以下罐需要类路径 ojdb14.jar, oraclepki.jar, ojpse.jar

2)的网址的连接应该是:

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

3)如下性质,需要设置(无论是作为系统属性(D项)或特性的连接)

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

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

同意,从来没有发送密码用户选择在明文。但是,短期使用公共钥匙加密,如果你给他们发电子邮件密码,这是要在明文。有一件事我见过经常发生的情况是,当用户忘记密码,并请它正在发送给它们,系统生成一个新的密码和发送 一个用户使用。然后,用户可以更改密码。

这样,密码用户选择了(这些用户可以使用其他)永远不会发送,而他们的临时发送密码明文的,他们应该改变它的到来之后。

如果你不想要发送的数据以纯文本,使用加密!!!

使用一些加密算法如AES,Twofish等。

你也必须考虑到哪你的客户和服务器。如果他们俩都是在同一台机器,就没有使用的使用加密。如果他们是在不同的机器,使用一些加密算法发送敏感的数据。

如果你正在检查有效性的密码,你可以发送的散列的密码。注意,这个方法将工作,如果你只是比较密码你自己。如果其他一些应用程序(出你的控制)是这样做的验证工作,你不能散的密码。

如果你直接连接的数据库没有中间层,应考虑使用数据库的用户对于每个真正的用户,因为否则你真的不能安全接入的应用程序。

如果你连接到Oracle与奥拉*净的用户密码是自动加密(自Oracle8)但是它可能回落到未加密的密码在一些情况。这可以是与残疾 ORA_ENCRYPT_LOGIN=true 在环境中的客户。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top