您好,我正在考虑限制密码不登录在日志控制台,因为我觉得这样暴露密码不安全。我如何从控制台/文件上的日志中排除特定变量?我们可以考虑这里的所有场景,应用程序服务器日志,logstash日志,GCloud日志记录。只是想排除它显示在那里。下面是简单的请求。我知道 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---
}
下面是Map的用户POJO
class User implements Serializable{
String name;
@Transient
String password;
String text;
String address;
}
1条答案
按热度按时间wztqucjr1#
依赖于
toString()
或@Transient
是不可靠的。其中一个日志附加器可以使用反射,从而读取每个属性。更可靠的方法是:创建一个对象的副本,删除任何敏感的属性,如password,并使用这个经过清理的副本进行日志记录。然后你不需要关心日志记录是如何完成的,因为你只是不传递任何敏感数据到日志记录器。