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

标签 java mysql database

我正在开发一个将被学校使用的应用程序。每个学校都会建立自己的数据库。并且每所学校都会向应用程序提供自己的“设置”文件。设置文件将包含创 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/

相关文章:

java - 在 System.out.println 之前有条件地终止当前行

java - 解析字符串日期时间

php - Drupal 8 PDO 准备语句绑定(bind)值错误

mysql - 我,收到错误 - 警告 : mysql_fetch_assoc() expects parameter 1 to be resource

php - 管理每周时间表的数据库模式

java - jtable getvalue 方法不起作用

java - 从 ReSTLet 请求中读出自定义 header

mysql - Postgres 从序列中提取多个 future 的键

database - 如何从命令行工具计算sqlite中的列数

php - 如何将 mysql 表导入 SOLR