前言:近期所做的项目进入测试阶段,在源码扫描时被检测出一些安全风险,其中就有配置文件中连接数据库的密码不能以明文展示这一问题。思考一下如果以明文展示确实会有很大的安全隐患,万一得罪一些深藏不露的黑客大佬,那数据库就面临被攻击的风险。接下来介绍的也是我试验了好几个版本最终得出的一个较为简单的方法,当然每个人的项目版本,以及依赖等等都不相同,不能保证我认为最简单的在其他项目上也适用,所以如果此方法不行
我们与客户端的接口交互中,为了更高的安全性,我们可能需要对接口加密(请求参数加密,服务端解密)、返回信息加密(服务端加密,客户端解密),但是也不是所有的接口都这样,有些接口可能不需要,我们可以使用注解来轻松达到此要求。将接口参数的加密解密和返回信息的加密解密分开,分别定义注解,利用Controller的ControllerAdvice来拦截所有的请求,在其中判断是否需要加密解密,即可达到要求。使用
前言最近项目组开始关注一些敏感数据的明文相关的事宜 , 其实这些东西也是都有非常成熟的解决方案。 既然最近着手去解决这些事情,那么也顺便给还未了解的大伙普及一下。这个系列就暂短的分成三篇 :yml配置文件里敏感数据的加密 第二篇    传入数据敏感数据的加密存储第三篇     使用mysql加解密函数轻松实现.本篇是第一篇 正文
1. 介绍在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用如果我们想保证数据传输的安全,对接口出参加密,入参解密。但是不想写重复代码,我们可以提供一个通用starter,提供通用加密解密功能2. 前置知识2.1 hutool-crypto加密解密工具hutool-crypto提供了很多加密解密工具,包括对称加密,非对称加密,摘要加密等等,这不做详细介绍。2.2 re
原创 精选 6月前
376阅读
前言在我们的应用程序,为了防止hardcode,通常会把程序中可能会变的,或者与环境相关的信息抽离出来,从而形成配置文件。SpringBoot配置文件中的内容通常情况下是明文显示,安全性就比较低一些。在application.properties或application.yml文件中,往往含有比较敏感的信息,比如mysql登连接信息,redis登陆密码以及各种第三方的密钥等等。这些数据一旦泄露,
1、应用背景    Spring Boot开发基于restful类型的API,我们再处理JSON请求时通常使用@RequestBody和@ResponseBody注解,针对HTTP JSON请求需要解密和返回的JSON数据我们经常需要对数据进行加密,有的时候我们还必须过滤掉一些对象字段的值来减少网络流量。2、解决方案对HTTP JSON请求数据解密 和 对返
转载 7月前
7阅读
写作目的数据安全这块还是挺严重的,尤其是自己专注于业务开发,不能总停留在一个地方,还要关注其他的一些问题,比如数据安全。配置脱敏实现配置的脱敏我使用了Java的一个加解密工具Jasypt。该工具支持对称加密和非对称加密。 首先通过简单的demo配置进行配置和测试。1、首先引入jasypt-spring-boot-starter<!--配置文件加密--> <dependency&
aes加密简介AES算法全称Advanced Encryption Standard,是DES算法的替代者,旨在取代DES成为广泛使用的标准,于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。AES是典型的对称加密算法,对称加密不同于md5 sha的哈希摘要算法,对称加密是可逆的
之前写过一篇关于过滤器实现加密解密功能的文章,但是在实际开发业务中发现,还是有一些问题的,在此特地说明。第一:过滤器走两遍的问题:1.过滤器上,添加了两个注解第一个:@Compent   将此Filter交给Spring容器管理第二个:@WebFilter通过WebFilter进行Filter声明,这样容器在进行部署的时候就会处理该Filter2.启动类上添加的注解@Servl
转载 6月前
35阅读
需求背景在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用如果我们想保证数据传输的安全,对接口出参加密,入参解密。但是不想写重复代码,我们可以提供一个通用starter,提供通用加密解密功能开源项目crypto-spring-boot-starter 项目地址https://gitee.com/springboot-hlh/spring-boot/tree/
首先介绍一下jasypt的使用方法版本对应的坑使用的时候还是遇到一个坑,就是jasypt的版本与spring boot版本存在对应情况。可以看到jasypt是区分java7和java8的,也存在依赖spring版本的情况。自己尝试了一下在使用jasypt-spring-boot-starter的前提下jasypt版本springboot版本2.1.02.1.01.51.4.21.51.5.31.8
# 实现Spring Boot MySQL密码加密解密 ## 介绍 在实际开发中,我们通常需要对数据库中的敏感信息进行加密存储,以保证数据的安全性。本文将教你如何在Spring Boot项目中实现MySQL密码的加密解密。 ## 整体流程 以下是实现“Spring Boot MySQL密码加密解密”的整体流程: | 步骤 | 操作 | | ------ | ------ | | 1 | 创
原创 3月前
131阅读
代码已上传至github,如遇到问题,可参照代码 以下介绍的只是一种思路,这种东西不是死的1)加密实现后台代码实现:CodecUtil 这里我生成两个AES的私钥,一个只是提高SHA1加密的复杂度(这个可以不要,或者可以说任意的,类似于盐),另一个才是用于AES的加解密/** AES密钥长度,支持128、192、256 */ private static final int AES_SECRET_
转载 6月前
82阅读
需求背景应用程序开发的时候,往往会存在一些敏感的配置属性数据库账号、密码第三方服务账号密码内置加密密码其他的敏感配置对于安全性要求比较高的公司,往往不允许敏感配置以明文的方式出现。 通常做法是对这些敏感配置进行加密,然后在使用的地方进行解密。但是有一些第三方的配置可能未提供解密注入点如数据库密码,这时要实现起来就比较麻烦。有没有比较方便的方法可以自动识别并解密。 本次主要针对这个问题,解决敏感配置
前言:介绍一个简单的MyBatis加方式,日常学习工作中提及这种方法的比较少,所以拿来说说,如果已经知道这种方法的忽略本文!一、背景在我们数据库中有些时候会保存一些用户的敏感信息,比如:手机号、银行卡等信息,如果这些信息以明文的方式保存,那么是不安全的。假如:黑进了数据库,或者离职人员导出了数据,那么就可能导致这些敏感数据的泄漏。因此我们就需要找到一种方法来解决这个问题。二、解决方案由
转载 4月前
127阅读
前言最近项目组开始关注一些敏感数据的明文相关的事宜 , 其实这些东西也是都有非常成熟的解决方案。 既然最近着手去解决这些事情,那么也顺便给还未了解的大伙普及一下。这三篇其实已经输出了,但是其实真正落地的时候,我考虑到加密算法的问题,我自己还是做了些许调整。正文我配置文件里面写的参数是用的我们自己统一指定的加密算法,所以解密的时候使用默认jasypt的解密是没办法成功的。这时候我们就需要自己重写 这
转载 5月前
35阅读
前言1.最近要做一个安全性稍微高一点的项目,首先就想到了要对参数加密,和采用https协议. 2.以前对加密这块不了解,查阅了很多资料,加密方式很多种,但是大概区分两种,一个就是对称加密(DES,3DES,AES,IDEA等),另外一个就是非对称加密(RSA,Elgamal,背包算法,Rabin,D-H等) 3.这两种区别还是有的,粗浅的说: (1)对称加密方式效率高,但是有泄露风险 (2)非对称
转载 2月前
55阅读
Spring Boot内置的properties支持为我们读取properties带来了便利。Properties文件的属性主要包含两种:系统内置(包含各个starter)的属性和用户自定义的属性。系统内置的属性由项目启动之时自动加载,不需要我们编写相关加载方法,而自定义的属性需要编写载入操作。具体步骤大家可以参考Spring Boot读取配置文件自定义信息这篇博客。工作中我们会遇到这样的需求:为
一、前言  在工作中遇到需要把配置文件加密的要求,很容易就在网上找到了开源插件 jasypt  (https://github.com/ulisesbocchio/jasypt-spring-boot#customEncryptor),根据官方说明和网上其他示例很容易搞定加密解密,但是本功能要求使用自定义的加密解密方法,查了下网上没有示例,于是看了下官方文档中关于自定义加密解密的部分说明
1. 业务背景最近接到一个需求,需要针对某些敏感数据入库时加密,出库时解密,避免出现被拖库后敏感信息暴露。2. 实现思路根据面向搜索引擎编程原理,在经过一天一夜的深入调研 后,初步确立方案:给实体类需要加密的字段添加注解;拦截insert/update方法:过滤出被注解的字段-取出值-加密-替换-加密后的数据入库;拦截select方法,通过自定义别名识别查询入参对象:过滤被注解的字段-加密-替换-
  • 1
  • 2
  • 3
  • 4
  • 5