spring 如何在logfiles/console中排除SimplePOJO的某些字段

xurqigkl  于 2023-04-10  发布在  Spring
关注(0)|答案(1)|浏览(211)

您好,我正在考虑限制密码不登录在日志控制台,因为我觉得这样暴露密码不安全。我如何从控制台/文件上的日志中排除特定变量?我们可以考虑这里的所有场景,应用程序服务器日志,logstash日志,GCloud日志记录。只是想排除它显示在那里。下面是简单的请求。我知道 transient 不工作在这里,但只是添加它的限制文件。下面是来自UI的请求,其中输入payLoad传递给API

  1. {
  2. name:"testLog";
  3. password:"Password@1243124242o955";
  4. text:"eerere";
  5. address:"hrerhjelr";
  6. }

我的登录API接受请求到请求体中

  1. public ResponseEntity<User> login(@RequestBody User userRequestPayLoad)
  2. {
  3. LOGGER.info("User details {}",userReqPayload); //Payload
  4. --login validation
  5. --blah---
  6. --blah---
  7. }

下面是Map的用户POJO

  1. class User implements Serializable{
  2. String name;
  3. @Transient
  4. String password;
  5. String text;
  6. String address;
  7. }
wztqucjr

wztqucjr1#

依赖于toString()@Transient是不可靠的。其中一个日志附加器可以使用反射,从而读取每个属性。
更可靠的方法是:创建一个对象的副本,删除任何敏感的属性,如password,并使用这个经过清理的副本进行日志记录。然后你不需要关心日志记录是如何完成的,因为你只是不传递任何敏感数据到日志记录器。

相关问题