1.背景

现代互联网充斥着各种攻击、病毒、钓鱼、欺诈等手段,层出不穷。对于一个公司而已最基本的财富无非是代码和数据,“配置属性加密”的应用场景假设如果攻击者通过某些手段拿到部分敏感代码或配置,甚至是全部源代码和配置时,我们的基础设施账号依然不被泄漏。当然手段多种多种多样,比如以某台中毒的内网机器为肉机,对其他电脑进行ARP攻击抓去通信数据进行分析,或者获取某个账号直接拿到源代码或者配置,等等诸如此类。

2.思路

  • 采用比较安全的对称加密算法;
  • 对基础设施账号密码等关键信息进行加密;
  • 构建时、运行时传入密钥,在加载属性前进行解密;
  • 开发环境可以将密钥放置在代码中,测试、灰度、生产等环境放置在构建脚本或者启动脚本中;
  • 如果自动化部署甚至可以有专门的程序来管理这些密钥(目前没有,暂不考虑);

值得思考的问题?

当内网被攻破,当源码泄漏,当zkui被攻破,当开发账号泄漏,当运维账号泄漏,我们如何保证生产环境的基础设施安全,如何防范关键信息泄漏?

3.技术框架

  • Jasypt是一个优秀的加密库,支持密码、Digest认证、文本、对象加密,此外密码加密复合RFC2307标准。http://www.jasypt.org/download.html
  • ulisesbocchio/jasypt-spring-boot,集成Spring Boot,在程序引导时对属性进行解密。https://github.com/ulisesbocchio/jasypt-spring-boot

4.处理过程

1.添加maven依赖引入jasypt

<!-- https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter -->
<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>1.8</version>
</dependency>

2.配置加密参数

jasypt:encryptor:#这里可以理解成是加解密的时候使用的密钥password: password

写一个测试方法,这里直接在单元测试里面来实现给密码加密,得到字符串密码

@Autowired
StringEncryptor stringEncryptor;@Test
public void encryptPwd() {String result = stringEncryptor.encrypt("yourpassword");System.out.println("=================="); System.out.println(result); System.out.println("==================");
}

把得到的密文写到需要使用到的地方,加密后的字符串需要放到ENC里面,格式如下:

spring:datasource:url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=falseusername: rootpassword: ENC(4TyrSSgQd2DCHnXVwkdKMQ==)driver-class-name: com.mysql.jdbc.Driver

5.启动时加载命令模式

通过命令行运行 jasypt-1.9.2.jar 包命令来加密解密:

1. 在jar包所在目录打开命令行,运行如下加密命令:

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=security algorithm=PBEWithMD5AndDES

运行结果如下:

----ENVIRONMENT-----------------Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.91-b14 ----ARGUMENTS-------------------algorithm: PBEWithMD5AndDES
input: root
password: security----OUTPUT----------------------i00VogiiZ1FpZR9McY7XNw==

2. 使用刚才加密出来的结果进行解密,执行如下解密命令:

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="i00VogiiZ1FpZR9McY7XNw==" password=security algorithm=PBEWithMD5AndD

运行结果如下:

----ENVIRONMENT-----------------Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.91-b14 ----ARGUMENTS-------------------algorithm: PBEWithMD5AndDES
input: i00VogiiZ1FpZR9McY7XNw==
password: security----OUTPUT----------------------root

过程中了解到对Spring Boot的支持是最简单的。如果要是 Spring 项目的话,需要做一些xml中的配置,参考:http://blog.csdn.net/gdfsbingfeng/article/details/16886805

最好还要了解一下使用过程是怎么样的,参考这个仓库中的README.md 描述的非常详细。

https://github.com/ulisesbocchio/jasypt-spring-boot

还有 jasypt 的一些介绍:

https://baijiahao.baidu.com/s?id=1575219661412590&wfr=spider&for=pc

Spring Boot使用jasypt处理加密问题相关推荐

  1. spring boot使用jasypt加密原理解析

    目录 版本对应的坑 关键技术点 源码解析 将jar包引入到spring boot中 @EnableAutoConfiguration原理 JasyptSpringBootAutoConfigurati ...

  2. Spring Boot集成Jasypt安全框架

    Jasypt安全框架提供了Spring的集成,主要是实现 PlaceholderConfigurerSupport类或者其子类. 在Sring 3.1之后,则推荐使用PropertySourcesPl ...

  3. Vue与Spring boot基于RSA非对称加密进行前后端交互

    当处理大型的系统项目,或者保密性要求高的项目.是要解除一些加密算法的,非对称加密肯定比对称加密更加安全,但是也更消耗性能.这里就展示一下前端使用Vue,后端使用Spring boot的情况下,进行前后 ...

  4. 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密

    学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA  AES  RSA AES  混合加密  整合 前言:    为了提高安全性采用了RSA,但 ...

  5. 对spring boot yml配置文件敏感信息加密处理的两种方式

    目录 方式一:手动配置加密处理(手动配置分三种情况) 方式二:spring boot整合Jasypt实现yml配置文件敏感信息加密 yml配置文件敏感信息无非就是数据库密码,redis密码,以及整合的 ...

  6. Spring Boot 实现配置文件加解密原理

    Spring Boot 配置文件加解密原理就这么简单 背景 接上文<失踪人口回归,mybatis-plus 3.3.2 发布>[1] ,提供了一个非常实用的功能 「数据安全保护」 功能,不 ...

  7. Java工作笔记-Spring boot中配置文件加密(Jasypt的使用)

    Jasypt Spring Boot提供了Spring Boot应用程序配置文件的加密.有下面3种方式在项目中集成jasypt-spring-boot: 1. 在classpath中添加jasypt- ...

  8. maven项目密码md5加密_加密Spring Boot中的application.properties

    1 概述 什么?都2020年了还在Spring Boot的配置文件中写明文密码? (虽然是小项目,明文也没人看.) (明文简单快捷方便啊!!! ) (你看直接用户名root密码123456多么简单!! ...

  9. Spring Boot 配置文件密码加密方法

    参考:https://github.com/ulisesbocchio/jasypt-spring-boot Spring Boot 配置文件密码加密两种方案 - ken007 - 博客园 1.引入j ...

最新文章

  1. 13_文件的操作模式
  2. node平台截取图片模块——jimp
  3. 在你的 Rails App 中开启 ETag 加速页面载入同时节省资源
  4. LeetCode-剑指 Offer 12. 矩阵中的路径
  5. cinema 4d完全学习手册_PBL 行动者手册 Vol.2(幼儿版)发布,快来领取一本神奇的故事集!...
  6. 【Python】机器学习绘图神器Matplotlib首秀!
  7. 伦茨8400变频器面板按键说明_变频器调试笔记
  8. 液压减振器 matlab,摩托车液压减振器内泄漏对阻尼力影响计算及其对策
  9. EWSA破解WPA无线密码具体图文教程
  10. 【Linux 操作系统】vim编辑器配置及常用命令
  11. 计算机游戏测试软件,你的电脑能不能吃鸡,两款软件很简单就能测试出来
  12. java bmp透明底色_C++ 设置透明背景图片
  13. 高分辨率遥感卫星影像在交通方面的应用
  14. 【NVIDIA】ubuntu桌面版安装nvidia显卡驱动程序
  15. 微信小程序3天刷量开流量主
  16. latex出现File ended while scanning use of \frame.错误
  17. 微信公众号活动策划方案怎么写?看完你也可以直接套用
  18. 第三章:密码学基本理论
  19. 东北大学 数据库概论 第三章SQL 习题见解:Find all customers who have an account at all branches located in Brooklyn
  20. 拼多多开店步骤是什么?在拼多多如何开店?

热门文章

  1. 服务器UDIMM, LRDIMM,RDIMM三种内存的区别
  2. 编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。
  3. Office 2016 Excel实现下拉栏
  4. 应用MIME将ZPT内容输出为excel文件(word文件)
  5. iPadmini能运行c语言吗,一个移动固态硬盘,可以给iPad Pro2020和iPad Mini用是什么体验?...
  6. 【算法题解】2022年第四届河南省CCPC大学生程序设计竞赛(喜提银牌)
  7. 手机配音用哪个软件?推荐下面这几款软件
  8. 跟领导关系再好,也别做3件小事,嘴欠手贱,煮熟鸭子会飞
  9. linux wget 图片,wget命令批量下载图片
  10. C Primer Plus(第六版)第三章 数据和C