如何在日志文件/控制台中排除简单 POJO 的某些字段

问题描述 投票:0回答:1

嗨,我正在考虑限制密码不在日志控制台中登录,因为我觉得以这种方式公开密码是不安全的。如何从控制台/文件的日志记录中排除特定变量?我们这里可以考虑所有的场景,Application server logs,logstash logs,GCloud logging。只是想排除它在那里显示。下面是简单的请求。 我知道 Transient 在这里不起作用,只是为了限制文件而添加了它。 下面是来自 UI 的请求,其中输入 payLoad 传递给登录 API

{
    name:"testLog";
    password:"Password@1243124242o955";
    text:"eerere";
    address:"hrerhjelr";

}

我的登录 API 将请求接受到请求正文中

 public ResponseEntity<User> login(@RequestBody User userRequestPayLoad) 
 {
   LOGGER.info("User details {}",userReqPayload); //Payload
   --login validation
   --blah---
   --blah---  
  }

下面是映射的User POJO

 class User implements Serializable{
String name;
@Transient
String password;
String text;
String address;

}
spring log4j
1个回答
0
投票

依靠

toString()
@Transient
是不靠谱的。一个日志附加程序可以使用反射,从而读取每个属性。

接下来将采用更可靠的方法。创建对象的副本,删除任何敏感属性(如密码),并使用这个经过清理的副本进行日志记录。然后你不需要关心日志记录是如何完成的,因为你只是不将任何敏感数据传递给记录器。

© www.soinside.com 2019 - 2024. All rights reserved.