SpringBoot进阶-SpringBoot如何实现配置文件脱敏

这篇具有很好参考价值的文章主要介绍了SpringBoot进阶-SpringBoot如何实现配置文件脱敏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考

SpringBoot进阶-SpringBoot如何实现配置文件脱敏?
SpringBoot集成jasypt配置信息加密以及采坑

一、概述

在很多开发场景中我们的SpringBoot应用是被打包成了一个Jar文件来使用的,利用解压缩工具可以将这个Jar包解压出来并且在对应的配置路径下找到数据库的访问地址以及数据库的登录密码等等,这是极不安全的操作。所以接下来我们就来研究一下如何在Spring Boot中对数据库配置文件中的相关敏感数据进行脱敏处理。

二、实现

配置文件的脱敏操作,应该在用户无感知的情况下进行,而不需要用户去做什么特殊的处理。下面我们就来看一下如何在用户无感知的情况下处理数据加密操作。

1、引入pom

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

2、在配置文件中添加密钥

在配置文件中添加一个用于数据加密的秘钥,可以是任意的数据。

jasypt:
  encryptor:
    password: JLKSJLKJLKJLKJLKJLKAFHH

3、生成加密之后的数据

这里我们采用的是接口调用的方式来完成数据的加密操作加密之后的数据通过控制台的方式输出

@RestController
public class TestController {

    @Autowired
    private StringEncryptor encryptor;

    @GetMapping("/test")
    public void test() {

        String url = encryptor.encrypt("jdbc:mysql://localhost:3306/vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8");
        String username = encryptor.encrypt("root");
        String password = encryptor.encrypt("123456");

        System.out.println(url);
        System.out.println(username);
        System.out.println(password);
    }
}

4、将加密之后的数据添加到配置文件中

加密数据的配置通过ENC()前缀的方式进行包裹。

spring:
  datasource:
    url: ENC(8XAS0HeXbRvGhZ6uR3ltF2k2fxD1m1H5euWGqSZmwXWEPyiPvMpv0ON+o8Nn1FeqKxnv4272VFqOzaRPCvtFKc92KgnOhCJNTtT4fFTO9VZ6H24hVO2BJ06zfmuFIR6FuFD/d91uoxt1nhm62DZEfgfTlUaZNCvWMYGTmzwElX1NO2THznjzUloGGMqv2fax6sfW++SDySrQGKZv5M5V5f2Bpa3KH8b0RX6DGumZ7Fc=)
    username: ENC(kUYJ1TaHgCyUwJf18b2RUtat7AEq/a0Ei//eq2+XWsZn6urXmPzOq2hq9wDIruc7)
    password: ENC(uimMBTtIxemXV+klLzrYXY7qwKPLNADAuw4UZkNSr3R3I1mCdRAjKsGnE5aKXRgx)

当然除了采用默认的ENC()方式进行包括以外还可以通过如下的方式进行自定义操作。

jasypt:
  encryptor:
    property:
      prefix: 'MM('
      suffix: ')'

这个时候配置的文件就需要通过MM()包裹才会被解密使用。

三、踩坑

Encryption raised an exception. A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension JCE Unlimited Strength Jurisdiction PolicyF

这个问题是jdk的无限强度管辖权政策权限不够(JCE),去下载一个JCE替换一下jre下的权限包就好。

jce_policy-8.zip下载

SpringBoot进阶-SpringBoot如何实现配置文件脱敏文章来源地址https://www.toymoban.com/news/detail-479760.html

到了这里,关于SpringBoot进阶-SpringBoot如何实现配置文件脱敏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaEE进阶(6)SpringBoot 配置文件(作用、格式、properties配置文件说明、yml配置文件说明、验证码案例)

    接上次博客:JavaEE进阶(5)Spring IoCDI:入门、IoC介绍、IoC详解(两种主要IoC容器实现、IoC和DI对对象的管理、Bean存储、方法注解 @Bean)、DI详解:注入方式、总结-CSDN博客 目录 配置文件作用 SpringBoot配置文件  配置文件的格式 properties 配置文件说明 properties 基本语法 读取配置

    2024年01月23日
    浏览(67)
  • 一种配置化的数据脱敏与反脱敏框架实现

    在业务量日益剧增的背景下,大量数据在各种业务活动中产生,数据安全控制一直是治理的重要环节,数据脱敏属于安全控制的范畴。对互联网公司来说,数据安全一直是极为重视和敏感的话题。数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据

    2024年02月16日
    浏览(38)
  • SpringBoot中优雅的实现隐私数据脱敏(提供Gitee源码)

    前言:在实际项目开发中,可能会对一些用户的隐私信息进行脱敏操作,传统的方式很多都是用replace方法进行手动替换,这样会由很多冗余的代码并且后续也不好维护,本期就讲解一下如何在SpringBoot中优雅的通过序列化的方式去实现数据的脱敏操作! 目录 一、导入pom依赖

    2024年02月12日
    浏览(41)
  • 【数据脱敏方案】不使用 AOP + 注解,使用 SpringBoot+YAML 实现

    在项目中遇到一个需求,需要对交易接口返回结果中的指定字段进行脱敏操作,但又不能使用 AOP+注解 的形式,于是决定使用一种比较笨的方法: 首先将所有需要脱敏字段及其对应脱敏规则存储到 Map 中。 在接口返回时,遍历结果中的所有字段,判断字段名在 Map 中是否存在

    2024年03月15日
    浏览(85)
  • SpringBoot中通过自定义Jackson注解实现接口返回数据脱敏

    SpringBoot中整合Sharding Sphere实现数据加解密/数据脱敏/数据库密文,查询明文: SpringBoot中整合Sharding Sphere实现数据加解密/数据脱敏/数据库密文,查询明文_霸道流氓气质的博客-CSDN博客 上面讲的是数据库中存储密文,查询时使用明文的脱敏方式,如果是需要数据库中存储 明文

    2024年02月16日
    浏览(43)
  • SpringBoot利用自定义json序列化器实现敏感字段数据脱敏

    物料准备: 1.hutool依赖 2.自定义的jackson序列化器 3.测试@JsonSerialize效果 因为案例代码用到了hutool提供的DesensitizedUtil数据脱敏工具类,这里要引入hutool的依赖。 如果你需要自定义 数据脱敏的逻辑,可以不引入这个依赖 自定义一个手机号脱敏序列化器 自定义一个邮箱脱敏序列化

    2024年02月12日
    浏览(68)
  • 【深度思考】如何优雅的实现脱敏?

    最近做了个脱敏的需求,要对系统中的敏感信息,如手机号、车牌号、身份证号、银行卡号等进行脱敏显示。 效果类似下面这样: 简单来说,就是对敏感信息中的某几位进行掩码显示,常见的一般是使用*。 本篇文章就来讲解下在项目中该如何优雅的实现脱敏。 首先,需要

    2024年02月11日
    浏览(34)
  • 【Python】【进阶篇】17、如何配置settings.py文件

    《settings.py配置文件详解》一文中,将 settings.py 配置文件的每一项给大家做了介绍。在开发的过程中,为了使 settings.py 适用项目,都要对这个默认配置文件进行相应的修改,那么我们应该如何修改呢,有哪几个重要的步骤呢?下面总结了配置文件的一些通用修改项,让我们一

    2024年02月02日
    浏览(53)
  • 金融用户敏感数据如何优雅地实现脱敏?

    日志脱敏是常见的安全需求。普通的基于工具类方法的方式,对代码的入侵性太强,编写起来又特别麻烦。 sensitive 提供了基于注解的方式,并且内置了常见的脱敏方式,便于开发。 为了金融交易的安全性,国家强制规定对于以下信息是要日志脱敏的: 用户名 手机号 邮箱

    2024年02月07日
    浏览(41)
  • 安全实现SpringBoot配置文件自动加解密

    应用程序开发的时候,往往会存在一些敏感的配置属性 数据库账号、密码 第三方服务账号密码 内置加密密码 其他的敏感配置 对于安全性要求比较高的公司,往往不允许敏感配置以明文的方式出现。 通常做法是对这些敏感配置进行加密,然后在使用的地方进行解密。但是有

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包