是否可以在不在配置文件(或任何其他标准可读位置)中提供用户名/密码信息的情况下设置与Oracle的JDBC连接?
通常,应用程序具有包含用于连接到数据库的设置参数的配置文件.有些DBA在配置文件中以明文形式显示用户名和密码这一事实存在问题.
我不认为Oracle和JDBC可以做到这一点,但我需要一些确认......
可能的折衷方案是在配置文件中加密密码并在设置连接之前对其进行解密.当然,解密密钥不应该在同一个配置文件中.这只会解决未经授权的用户意外打开配置文件的问题.
您可能希望尝试Kerberos,它可以使用OS用户的凭据并将OS用户添加到外部标识的数据库中.确保您使用Kerberos而不是旧方法,这有严重的安全问题.
对于Kerberos支持,您需要高级安全选项和最新的JDBC驱动程序,可能是11g版本.在尝试使用Java工作之前,请在Sql*Plus中使用'/'作为用户名和空密码进行试用."从双重选择用户"应该给你用户@域.您还可能会发现在使用精简或OCI驱动程序时,Kerberos配置之间存在根本区别.
您绝对不希望能够在没有凭据的情况下连接到数据库,因为这会使数据库容易受到攻击.
这是一个普遍问题,如何存储访问外部系统所需的凭据?WebLogic有一个凭据映射器来解决此问题,其中凭据(加密)存储在嵌入式LDAP中.许多Oracle产品使用凭证存储工具在Oracle钱包中存储凭据.
在这个问题中,你提供了答案.存储密码加密并在需要时解密.显然你必须使用对称加密算法,如3DES,这样你就可以解密它.确保对称密钥不是可以猜到的.
诀窍在于保留en/de-cryption所需的对称密钥.您可以将其放在通过操作系统保护的文件中,也可以将其保存在代码中,但是您需要保护代码的安全.如果您使用将生成相同密钥的技术并且算法相当安全,您也可以生成密钥.
如果您可以保持代码安全,您显然也可以在代码中保留密码.但是,您希望能够灵活地更改凭据而无需更改代码.
您也可以为此解决方案添加更多图层.您可以加密配置文件(使用不同的密钥)以及其中的密码,使黑客发现2个密钥.使用PKI还有其他更安全的方法,但它们很难设置.