首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何避免存储凭据以使用JDBC连接到Oracle?

如何避免存储凭据以使用JDBC连接到Oracle?
EN

Stack Overflow用户
提问于 2008-09-24 12:05:23
回答 9查看 13.3K关注 0票数 28

是否可以在不在配置文件(或任何其他标准可读位置)中提供用户名/密码信息的情况下设置到Oracle的JDBC连接?

通常,应用程序都有一个配置文件,其中包含用于连接到数据库的设置参数。一些DBA对于用户名和密码在配置文件中是明文形式的事实存在问题。

我认为这在Oracle和JDBC中是不可能的,但我需要一些确认...

一种可能的折衷方法是对配置文件中的密码进行加密,然后在建立连接之前对其解密。当然,解密密钥不应该在同一个配置文件中。这只会解决未经授权的用户意外打开配置文件的问题。

EN

回答 9

Stack Overflow用户

发布于 2008-09-27 10:42:38

您可能希望尝试Kerberos,它可以使用操作系统用户的凭据并将操作系统用户添加到外部标识的数据库中。请确保使用Kerberos,而不是具有严重安全问题的旧方法。

对于Kerberos支持,您需要高级安全选项和最新的JDBC驱动程序,可能是11g版本。在尝试让它在Java中工作之前,在Sql*Plus中尝试使用'/‘作为用户名和空密码。"select user from dual“应该会显示user@domain。您可能还会发现,当涉及到Kerberos配置时,使用thin驱动程序或使用OCI驱动程序之间存在根本区别。

票数 6
EN

Stack Overflow用户

发布于 2008-09-24 12:24:46

您肯定不希望在没有凭据的情况下能够连接到数据库,因为这会使数据库容易受到攻击。

这是一个一般性问题,如何存储访问外部系统所需的凭据?WebLogic有一个凭证映射器来解决这个问题,在这个映射器中,凭证(加密的)存储在嵌入式LDAP中。许多Oracle产品使用在Oracle wallet中存储凭据的凭据存储工具。

在问题中,您提供了答案。将密码加密存储,并在需要时解密。显然,你必须使用对称加密算法,比如3DES,这样你才能解密它。确保对称密钥不是可以猜到的。

诀窍在于保存加密/解密所需的对称密钥的位置。您可以将其放入一个通过操作系统进行保护的文件中,也可以将其保存在代码中,但随后您需要确保代码的安全。如果您使用的技术将生成相同的密钥,并且算法相当安全,则也可以生成密钥。

如果你能保证代码的安全,你显然也可以在代码中保留密码。但是,您需要能够在不更改代码的情况下更改凭据的灵活性。

您还可以向此解决方案中添加更多层。您可以加密配置文件(使用不同的密钥)以及其中的密码,使黑客发现2个密钥。还有其他使用PKI的更安全的方法,但它们很难设置。

票数 5
EN

Stack Overflow用户

发布于 2008-09-24 13:02:14

我建议你研究一下代理身份验证。这一点在Oracle® Database Security GuideOracle® Database JDBC Developer's Guide and Reference中都有说明。本质上,这允许您在数据库中拥有一个只具有connect权限的用户。用户的真实数据库帐户配置为能够作为代理用户进行连接。然后,通过JDBC连接的应用程序会存储代理用户名和密码,并且在连接时会提供这些凭据,并在连接字符串中加上实际数据库用户的用户名。Oracle作为代理用户进行连接,然后模拟实际数据库用户,继承实际用户的数据库权限。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/126720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档