java - 使用 Logback 屏蔽密码?

标签 java logging passwords masking logback

我们目前通常记录所有进出我们系统的 XML 文档,其中一些包含明文密码。我们希望能够配置执行此操作的 logback 记录器/附加程序以进行一些模式匹配或类似操作,如果它检测到存在密码则替换它(最有可能使用星号)。请注意,我们不想过滤掉日志条目,我们想屏蔽它的一部分。我将不胜感激有关如何使用 logback 完成此操作的建议。谢谢。

最佳答案

logback 版本 0.9.27 引入 replacement capability .替换支持正则表达式。例如,如果记录的消息是“userid=alice, pswd='my secret'”,输出模式是

  "%d [%t] $logger - %msg%n",

你只需将模式修改为

 "%d [%t] $logger - %replace(%msg){"pswd='.*'", "pswd='xxx'"}%n"

请注意,上面使用了 option quoting .

之前的日志消息将输出为“userid=alice, pswd='xxx'”

为了获得出色的性能,您还可以将日志语句标记为 secret ,并指示 %replace 仅对标记为 secret 的日志语句执行替换。例子,

 Marker confidential = MarkerFactory.getMarker("CONFIDENTIAL");
 logger.info(confidential, "userid={}, password='{}'", userid, password);

不幸的是,当前版本的 logback 尚不支持条件替换(基于标记或其他)。但是,您可以通过扩展 ReplacingCompositeConverter 轻松编写自己的替换代码。如果您需要进一步的帮助,请在 logback-user 邮件列表中大声疾呼。

关于java - 使用 Logback 屏蔽密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4607877/

相关文章:

java - 用JPA实现分层数据结构(固定深度)

mysql - MD5 与密码编码?

java - Elasticsearch用Java api查找索引是否为空

tomcat下的java.lang.UnsatisfiedLinkError

asp.net-mvc - 我可以在 ASP.NET MVC 5(非 mvc 核心)项目中使用 ILoggerFactory 吗?

java - 如何使用 Log4J 在 Java 中创建二进制日志文件

python - inotify IN_CLOSE_WRITE 仅针对手动编辑的文件触发一次

SSH 在登录时要求输入密码而不是密码短语

security - 临时密码安全 - 以纯文本形式存储

java - 在JSP中使用类