关闭

使用durid的ConfigFilter对数据库密码加密

标签: druid密码加密config
4687人阅读 评论(0) 收藏 举报
分类:

上一篇写到了使用druid对项目的sql、数据源,web、url、session等的监控,今天继续分享一个使用druid的ConfigFilter对数据库密码加密功能。

对于大部分程序员来说,数据库的信息,如用户名,密码等信息一般都写到配置文件中,便于修改和维护,然而这对于运维安全来说确实一个很大的挑战,如果黑客进入到你的系统里面去,那这些数据库用户名和密码就一目了然,这个是很不安全的。Druid为此提供一种数据库密码加密的手段ConfigFilter,使用他加密数据库密码,即使别人拿到了数据库连接密码,破解这个密码也得稍稍花点时间了,也对咱们的网站安全性提高了一些。

好了,废话少说,配置一下也是很简单的啦!

第一步:
执行druid的命令加密数据库密码
命令:
java -cp druid-0.2.23.jar com.alibaba.druid.filter.config.ConfigTools xxxxxx

举个栗子:

命令:
D:\>java -cp druid-1.0.15.jar com.alibaba.druid.filter.config.ConfigTools 123456
输出:
Biyu5YzU+6sxDRbmWEa3B2uUcImzDo0BuXjTlL505+/pTb+/0Oqd3ou1R6J8+9Fy3CYrM18nBDqf6wAaPgUGOg==

输出的结果就是加密后的密码啦!xxxxxx为你的数据库密码明文。

第二步:
配置数据源,使用Druid配置数据源对数据库密码进行解密。

<!-- Druid JNDI DataSource for J2EE environments -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <property name="url" value="${jdbcUrl}" />
    <property name="username" value="${username}" />
    <property name="password" value="${password}" />
    <!-- 配置初始化大小、最小、最大 -->
    <property name="initialSize" value="5" />
    <property name="minIdle" value="5" />
    <property name="maxActive" value="20" />
    <!-- 配置获取连接等待超时的时间 -->
    <property name="maxWait" value="60000" />
    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis" value="3000" />
    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    <property name="minEvictableIdleTimeMillis" value="300000" />

    <property name="validationQuery" value="SELECT 'x' FROM DUAL" />
    <property name="testWhileIdle" value="true" />
    <property name="testOnBorrow" value="false" />
    <property name="testOnReturn" value="false" />

    <!--打开PSCache,并且指定每个连接上PSCache的大小 ,Oracle,把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false-->
    <!--<property name="poolPreparedStatements" value="true" />-->
    <!--<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />-->

    <!-- 开启Druid的监控统计功能 -->
    <property name="filters" value="stat,config" />
    <!-- 开启数据库密码解密-->
    <property name="connectionProperties" value="config.decrypt=true" />            
</bean>  

说明:这个数据源配置跟上一篇的配置大致相同,唯一的区别就是增加了开启数据库密码解密功能。name=”connectionProperties” value=”config.decrypt=true”,这个就是配置druid进行数据库密码解密。
值得注意的是:property name=”filters” value=”stat,config”这里面可以配置多个filter,除了上一次监控统计的stat,这次解密我们需要添加config。

经过简单的配置,这样配置文件里面的密码加密之后,有可以连接到数据库啦!

当然,使用ConfigFilter解密密码,有三种方式配置:
1) 可以在配置文件my.properties中指定config.decrypt=true
2) 也可以在DruidDataSource的ConnectionProperties中指定config.decrypt=true
3) 也可以在jvm启动参数中指定-Ddruid.config.decrypt=true

ConfigFilter不仅仅可以进行数据库加密,还可以支持配置文件从本地文件系统中读取,从远程http文件中读取配置操作,大家可以试试看!

参考连接:Druid ConfigFilter配置

2
0
查看评论

springMVC web项目 数据库用户名密码加密解密

在使用springMVC开发web项目中,数据库的用户名,密码一般都是配置在.properties文件中 然后在通过.xml配置文件引入.properties的变量,例如 在config.properties文件中,配置如下变量,变量值配置在pom.xml的profile标签下,在此就不再赘述 ...
  • zhangt85
  • zhangt85
  • 2014-12-24 12:39
  • 19727

密码存到数据库时加密

String loginPassword = request.getParameter("loginPassword"); acceptCompany.setLoginPassword(MD5Utils.getJavaSecurityMD5(loginPassword));//...
  • u010683122
  • u010683122
  • 2016-09-13 09:36
  • 1482

服务器数据库用户名密码进行加密

  • 2016-10-13 11:48
  • 2KB
  • 下载

spring web项目 数据库用户名密码加密解密

spring web项目 数据库用户名密码加密解密 在使用springMVC开发web项目中,数据库的用户名,密码一般都是配置在.properties文件中 然后在通过.xml配置文件引入.properties的变量,例如 在config.properties文件中,配置如下变量,变量...
  • yucaifu1989
  • yucaifu1989
  • 2016-03-17 14:16
  • 2271

详解MYSQL数据库密码的加密方式及破解方法(1)

转自 http://hi.baidu.com/davice_li/blog/item/5f5b470be3307e32b0351db5.html MySQL数据库用户密码跟其它数据库用户密码一样,在应用系统代码中都是以明文出现的,在获取文件读取权限后即可直接从数据库连接文件中...
  • paul123456789io
  • paul123456789io
  • 2016-11-08 14:31
  • 20983

使用MD5加密数据库中的用户密码介绍

使用MD5加密数据库中的用户密码介绍 ●前言我们知道,现在网络上一般的网站,稍微完善一点的,往往都需要用户先注册,提供诸如电子邮件、账号、密码等信息以后,成为网站栏目的注册用户,才可以享受网站一些特殊栏目提供的信息或者服务,比如免费电子邮件、论坛、聊天等,都需要用户注册。而对于电子商务网站...
  • accp_fangjian
  • accp_fangjian
  • 2006-11-01 14:45
  • 7178

加密工具类 DESUtil

package com.xhrd.util; import java.security.Key; import java.security.Security; import javax.crypto.Cipher; import org.apache.commons.lang.StringUt...
  • sigangjun
  • sigangjun
  • 2014-01-13 09:57
  • 3006

详解MYSQL数据库密码的加密方式及破解方法(2)

转自 http://hi.baidu.com/davice_li/blog/item/2996960e451015266159f3b6.html 2.将MySQL用户密码字符串加入到Cain破解列表     本文使用Cain &a...
  • paul123456789io
  • paul123456789io
  • 2016-11-08 14:59
  • 5421

如何配置数据库密码加密访问数据库

一般的数据库配置文件中,连接数据库都是这样的,现在又项目需要对password 进行加密处理, 所以我们要对org.apache.commons.dbcp.BasicDataSource类进行重写,如下: package com.joyintech.tisaccel.base; import or...
  • Fishroad
  • Fishroad
  • 2015-05-26 11:16
  • 6640

MD5应用于数据库中密码加密

最近接触网络安全方面的知识,把好的整理下: 登录Web系统时通常都采用用户名和密码的形式,如果这样的数据以明码的方式放在数据库中的话无疑会给别有用心的人以可趁之机,所以采取一定的防范措施是必要的。 现在比较安全的方式是用MD5进行加密,利用Apache commons的DigestUtils...
  • u012724065
  • u012724065
  • 2017-06-03 21:39
  • 969
    个人资料
    • 访问:141700次
    • 积分:1744
    • 等级:
    • 排名:千里之外
    • 原创:40篇
    • 转载:0篇
    • 译文:0篇
    • 评论:142条
    最新评论