gpt4 book ai didi

apache - 为 c3p0 ComboPooledDataSource 加密密码

转载 作者:行者123 更新时间:2023-11-28 22:03:20 25 4
gpt4 key购买 nike

我目前有一个 server.xml 配置,其中包含以下内容

<Resource auth="Container"
description="DB Connection"
driverClass="oracle.jdbc.driver.OracleDriver"
maxPoolSize="40"
minPoolSize="2"
aquireIncrement="1"
name="jdbc/FOOBAR"
user="foo"
password="bar"
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
jdbcUrl="path:to:db:port:db" />

出于显而易见的原因,我要求不再允许用户名/密码以明文形式出现在 server.xml 文件中。

我在网上看了一些书,发现了 How to Secure Tomcat Database Passwords for Java Encrypt username and password for JNDI in Tomcat Server.xml和许多其他页面;但是,我有点卡住了。

我首先查看了 BasicDataSourceFactory 的 extendind - 但由于我使用的是 c3p0 CombinedPooledDataSource,这似乎无法发生。然后我尝试通过实现 PooledDataSource、Serializable 和 Referenceable 来尝试创建一个 c3p0 数据源包装器,但这也没有用。

我读到我可以通过使 auth="Container"=> auth="Application"将身份验证移到服务器端。但是,我不确定如何使用 Hibernate 来实现其余部分。

任何帮助都会很棒。

最佳答案

因此,这不是一个高安全性的解决方案。

但解决这个问题的一个简单方法是利用 c3p0 的“密码”属性只是一个可配置的 c3p0 属性这一事实,可以通过多种方式进行设置。因此,您可以创建一个 c3p0.properties 文件和/或一个 c3p0-config.xml 文件,并在那里设置密码。或者,您可以确保在运行 JVM 时设置系统属性 c3p0.password。

如果您有多个具有不同密码的数据源,则需要使用 c3p0 的命名配置功能,这意味着一个 c3p0-config.xml 文件。

c3p0 配置(包括 c3p0.properties 和 c3p0-config.xml)文件可以停留在应用程序有效 CLASSPATH 中 jar 文件的顶层。 (对于 tomcat,您必须注意特定于 Web 应用程序的 ClassLoader 和更广泛共享的位置之间的区别。)因此,您可以将密码嵌入到压缩的 jar 文件而不是纯文本文件中。显然,这是不安全的:明文只是一个“解压”。但这会防止密码被随便 greppable 之类的。

请参阅http://www.mchange.com/projects/c3p0/#configuration_files

祝你好运!

关于apache - 为 c3p0 ComboPooledDataSource 加密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14862211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com