gpt4 book ai didi

java - 应用程序连接到数据库

转载 作者:搜寻专家 更新时间:2023-10-30 23:20:01 25 4
gpt4 key购买 nike

我正在开发一个将被学校使用的应用程序。每个学校都会建立自己的数据库。并且每所学校都会向应用程序提供自己的“设置”文件。设置文件将包含创 build 置文件的特定学校的数据库 url。这样一来,如果使用该应用程序的学生想要连接到不同的数据库,他们只需加载不同的设置文件即可。

我的问题是,如何保护用于连接到数据库的用户名和密码?因此,只有应用程序具有对数据库的读写访问权限。并且该应用程序仅具有对那所特定学校的读写权限?

如果您需要更多信息,请告诉我。

谢谢

最佳答案

看看Jasypt ,它是一个 Java 库,允许开发人员以最小的努力将基本的加密功能添加到他/她的项目中,而无需深入了解密码学的工作原理。

如果您使用 Spring,您可以将 db.properties 定义为:

 jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/yourdb
jdbc.username=userName
jdbc.password=ENC(A6L729KukPEx7Ps8didIUWb01fdBRh7d)

并使用 Jasypt 和 Spring 配置它:

<bean class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg>
<bean class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config">
<bean class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />
</bean>
</property>
</bean>
</constructor-arg>
<property name="locations">
<list>
<value>classpath:/META-INF/props/db/db.properties</value>
</list>
</property>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>

这会向学生隐藏实际密码(您可以对 用户名 执行相同的操作),因此他们无法通过查看属性文件来导出连接字符串。

如果您不使用 Spring,这里有一个 Jasypt guide实现相同的“手动”

关于java - 应用程序连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7721069/

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