嗨,我正在考虑限制密码不在日志控制台中登录,因为我觉得以这种方式公开密码是不安全的。如何从控制台/文件的日志记录中排除特定变量?我们这里可以考虑所有的场景,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;
}
依靠
toString()
或@Transient
是不靠谱的。一个日志附加程序可以使用反射,从而读取每个属性。
接下来将采用更可靠的方法。创建对象的副本,删除任何敏感属性(如密码),并使用这个经过清理的副本进行日志记录。然后你不需要关心日志记录是如何完成的,因为你只是不将任何敏感数据传递给记录器。