当前位置: 首页 > news >正文

本地网站建设方案信息大全建站优化

本地网站建设方案信息大全,建站优化,我做百度_上面有手机网站的_为什么还要做手机网站,自己做网站流程几年前研究过Tomcat context.xml 中数据库密码改为密文的内容#xff0c;因为当时在客户云桌面代码没有留备份也没有文章记录#xff0c;最近项目又提出了这个需求就又重新拾起来学习一下。在网上找了一些资料#xff0c;自己也大概试了一下#xff0c;目前功能是实现了。参…几年前研究过Tomcat context.xml 中数据库密码改为密文的内容因为当时在客户云桌面代码没有留备份也没有文章记录最近项目又提出了这个需求就又重新拾起来学习一下。在网上找了一些资料自己也大概试了一下目前功能是实现了。参考链接https://blog.csdn.net/fzzsh/article/details/8863338https://blog.csdn.net/T_P_F/article/details/118552417Tomcat 常见情况正常的tomcat context.xml配置文件数据库用户名和密码都是明文的Resource namejdbc/DSamdb authContainer typejavax.sql.DataSource descriptiontest DBinitialSize10 maxWaitMillis10000 maxTotal80 maxIdle20 minIdle10 validationQueryselect 1usernameroot passwordroot driverClassNamecom.mysql.jdbc.Driverurljdbc:mysql://localhost:3306/webtest?useUnicodetrueamp;characterEncodingutf8amp;serverTimezoneGMT%2B8amp;useSSLfalse /现在因为安全要求或者国家等保要求这个数据库密码是需要加密的并且要定期修改的首先实现加密功能Tomcat context.xml密码加密tomcat加密是通过在配置文件中增加 factory参数让数据源的解析指到定制化的jar包中对密码或用户名进行解析加密后的配置文件信息Resource namejdbc/DSamdb authContainer typejavax.sql.DataSource descriptiontest DBinitialSize10 maxWaitMillis10000 maxTotal80 maxIdle20 minIdle10 validationQueryselect 1factorycom.axb.data.factory.DataSourceFactoryusernamerootpassword726f6f74 driverClassNamecom.mysql.jdbc.Driverurljdbc:mysql://localhost:3306/webtest?useUnicodetrueamp;characterEncodingutf8amp;serverTimezoneGMT%2B8amp;useSSLfalse / factorycom.axb.data.factory.DataSourceFactory 是包名类名。password 的root已经加密为“726f6f74”从网上找到加密算法比较简单所以加密串看着也挺简单。配置信息啰嗦完了上代码DataSourceFactory.java 继承BasicDataSourceFactorypackage com.axb.data.factory;import java.util.Enumeration; import java.util.Hashtable; import java.util.Properties; import javax.naming.Context; import javax.naming.Name; import javax.naming.RefAddr; import javax.naming.Reference; import javax.naming.StringRefAddr; import javax.sql.DataSource; import net.sf.json.JSONObject; import org.apache.tomcat.dbcp.dbcp.BasicDataSource; import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory; import com.axb.data.factory.util.Encode; import com.axb.data.factory.util.HttpUtil;public class DataSourceFactory extends BasicDataSourceFactory {Overridepublic Object getObjectInstance(Object obj, Name name, Context nameCtx,Hashtable environment) throws Exception {if (obj instanceof Reference) {//用户名没有加密 // setUsername((Reference) obj);setPassword((Reference) obj);}return super.getObjectInstance(obj, name, nameCtx, environment);}private void setUsername(Reference ref) throws Exception {findDecryptAndReplace(username, ref);}private void setPassword(Reference ref) throws Exception {findDecryptAndReplace(password, ref);}private void findDecryptAndReplace(String refType, Reference ref)throws Exception {int idx find(refType, ref);System.out.println(idx -----findDecryptAndReplace--- ref.get(idx));String decodeStr ref.get(idx).getContent().toString();System.out.println(findDecryptAndReplace--- decodeStr);String decrypted Encode.decode(decodeStr);replace(idx, refType, decrypted, ref);}private int find(String addrType, Reference ref) throws Exception {Enumeration enu ref.getAll();for (int i 0; enu.hasMoreElements(); i) {RefAddr addr (RefAddr) enu.nextElement();if (addr.getType().compareTo(addrType) 0) {return i;}}throw new Exception(The \ addrType \ name/value pair was not found in the Reference object. The reference Object is ref.toString());}private void replace(int idx, String refType, String newValue, Reference ref)throws Exception {ref.remove(idx);ref.add(idx, new StringRefAddr(refType, newValue));}} 加密类可使用自己的加密算法主要修改encode和decode两个方法自己可以写个main方法测试加解密功能。代码也是从CSDN找的连接package com.axb.data.factory.util;public class Encode {//加密public static String encode(String password) {String result ;byte[] psd password.getBytes();for (int i 0; i psd.length; i) {result Integer.toHexString(psd[i] 0xff);}return result;}//解密public static String decode(String password) {String result ;System.out.println(encode---- password);password password.toUpperCase();int length password.length() / 2;char[] hexChars password.toCharArray();byte[] d new byte[length];for (int i 0; i length; i) {int pos i * 2;d[i] (byte) (charToByte(hexChars[pos]) 4 | charToByte(hexChars[pos 1]));}result new String(d);return result;}//字符转字节public static byte charToByte(char c) { return (byte) 0123456789ABCDEF.indexOf(c); }tomcat启动后控制台输出效果能正常启动就可以该方法不需要额外的jar包开发的时候只需要引入tomcat-dbcp.jar这个包在tomcat的lib下就有。不需要额外下载。通过http请求密码这样改完以后配置文件密码是密文了但是每次更换密码还是需要修改密文并重启tomcat当然也可以把密码写在某个路径下的文件中。运维人员每次变更密码都要改服务器多了也是需要花费不少时间。我就试着用http请求获取密码改动是在findDecryptAndReplace 方法private void findDecryptAndReplace(String refType, Reference ref)throws Exception {int idx find(refType, ref);System.out.println(idx -----findDecryptAndReplace--- ref.get(idx));String decodeStr ref.get(idx).getContent().toString();System.out.println(findDecryptAndReplace--- decodeStr);String decrypted Encode.decode(decodeStr);// replace(idx, refType, decrypted, ref);/*** 试试远程获取密码*/String url http://localhost:9002/getDataBaseInfo;String jsonData {\userId\:\zhangsan\};String returnStr HttpUtil.httpPost(url,jsonData);JSONObject tokenJSON JSONObject.fromObject(returnStr);System.out.println(decrypted:decrypted json_passwordtokenJSON.get(password));System.out.println(tokenJSON.get(password)tokenJSON.get(userName));replace(idx, refType, tokenJSON.get(password).toString(), ref);}启动后控制台日志http请求需要多引入一些jar包jar包直接扔到tomcat的lib目录下就可以。测试方法类也简单RequestMapping(value /getDataBaseInfo, method RequestMethod.POST)public String getDataBaseInfo(RequestBody String josnString) {System.out.println(josnStringjosnString);Map m new HashMap();m.put(userName,root);m.put(password,root);Gson gson new Gson();gson.toJson(m);return gson.toJson(m);}这种方式可以请求少修改配置文件但还是需要重启服务器的因为我试着修改密码为错误密码应用还是能正常访问的。代码链接https://download.csdn.net/download/jiudihanbing/87537958没积分也可以直接粘贴文章中代码有积分可以下载代码直接使用测试代码因为很简单就没有了上面的方法都不能让运维人员省时省力的解决问题只是稍微合规和减小点工作量。我公司有特权账号的产品可以让Tomact context.xml配置文件通过接口获取最新DB密码同时也不需要重启tomcat我以后有机会在了解一下实现机制。
http://www.dnsts.com.cn/news/2815.html

相关文章:

  • 商务网站建设兴田德润电话多少一键优化下载安装
  • 莱芜房产网站网络营销经典成功案例
  • wordpress 最简单模板下载南宁seo规则
  • 做网站需要审核资质吗建个网站费用大概多少钱一年
  • 帮做毕设的网站制作网页的教程
  • 做设计不进设计公司网站今日热点新闻事件摘抄2022
  • 广州市品牌网站建设服务机构广东深圳龙华区
  • 企业官网建站费用手机网站建设公司
  • 做装修业务呢有多少网站google seo实战教程
  • 网站备案的链接培训网站制作
  • 最新域名查询网肇庆网站快速排名优化
  • 广东做陶瓷的网站网络营销与推广
  • 做网站后台用什么软件抖音seo排名系统哪个好用
  • 农业做的好的网站全网引擎搜索
  • 自己做网站还是用别人网站厦门seo外包服务
  • 德州做网站的公司有哪些企业培训机构排名前十
  • 网站建设批复意见中国最新领导班子
  • 2015做那些网站致富seo网站推广收费
  • 兰州 网站建设公司手机制作网页用什么软件
  • 长春建设银行网站百度搜索排名与点击有关吗
  • 网站定制建设公司有没有自动排名的软件
  • 网站建设实验报告总结网络推广外包
  • 学生求职网站的需求分析怎么做广东省疫情最新
  • 怎样制作免费手机网站网页百度
  • 烟台做外贸网站网络推广推广培训
  • 建筑设计自学网站手机营销推广方案
  • 购物网站后台管理模板seo网站关键词排名软件
  • b2bb2c网站电子商务网站建设前期方案seo研究院
  • 网站favicon图标银川seo
  • 全球著名室内设计公司排名网站如何做优化推广