使用 Logback 屏蔽日志中的敏感数据

文章介绍了如何使用Logback框架来处理应用程序中的敏感数据,特别是用户信息。通过创建一个名为MaskingPatternLayout的自定义布局,该布局扩展了PatternLayout并应用正则表达式来匹配和替换密码、令牌等敏感信息。加密算法被用来遮罩这些数据,确保它们在日志输出时不被泄露。在logback.xml配置文件中设置这个布局后,日志将自动屏蔽和加密敏感字段。
Logback

Logback是 Java 社区中使用最广泛的日志记录框架之一。它是其前身 Log4j 的替代品。它提供了比 Log4j 更快的实现,并且提供了更多的配置选项和更灵活的归档旧日志文件。
敏感数据是任何旨在防止未经授权访问的信息。这可以包括从个人身份信息 (PII)(如社会安全号码)到银行信息、登录凭据、地址、电子邮件等的任何内容。

在我们的应用程序中登录时,我们将屏蔽属于用户的敏感数据。
假设我们在 Web 请求的上下文中记录用户详细信息。我们需要屏蔽与用户相关的敏感数据。假设我们需要输出下面的log:

 log.info("name:{}, password:{}", "testuser", "123456");
 log.error("name:testuser, token:12345adsfkdsahkjfsa6");
 log.error("name:testuser, token  :  12345adsfkdsahkjfsa6, password  =nihflhsadfhisahfihsad");
 log.info("name: {}, password: {} {}", 1, "sadfhkjsahfsadfsakj", 1);
PatternLayout

配置背后的想法是用自定义布局扩展我们需要的每个 Logback appender。在我们的例子中,我们将编写一个MaskingPatternLayout类作为 PatternLayout 的实现。每个掩码模式代表匹配一种类型的敏感数据的正则表达式。

让我们构建MaskingPatternLayout类:

public class MaskingPatternLayout extends PatternLayout {
   
   

    private final Pattern pattern = Pattern.compile("(token|password)\\s*(:|=|[\\(\\)])([^,]*)(\\s<|,)");//enc(

    @Override
    public String doLayout(ILoggingEvent event) {
   
   
        return maskMessage(super.doLayout(event));
    }

  private String maskMessage(String message) {
   
   
        String result = "";
        try {
   <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值