当前位置: 首页 > 面试题库 >

使用Logback屏蔽密码?

司马晋
2023-03-14
问题内容

当前,我们通常记录所有进出我们系统的XML文档,其中一些包含明文密码。我们希望能够配置执行此操作的logback logger /
appender进行某种模式匹配或类似操作,并且如果它检测到存在替换它的密码(很可能带有星号)。注意,我们不想过滤掉日志条目,我们想掩盖其中的一部分。我很乐意提供有关如何通过注销执行此操作的建议。谢谢。


问题答案:

0.9.27版本的logback引入了替换功能。替换支持正则表达式。例如,如果记录的消息是“
userid = alice,pswd =’my secret’”,并且输出模式为

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

您只需将模式修改

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

请注意,以上内容使用了选项引用。

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

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

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

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



 类似资料:
  • 我需要能够在事件中搜索多种模式中的任何一种,并用掩码值替换模式中的文本。这是我们应用程序中的一项功能,旨在防止敏感信息落入日志。由于信息可能来自各种来源,因此对所有输入应用过滤器是不切实际的。除了日志记录之外,toString()还有其他用途,我不希望toString()对所有调用(仅日志记录)进行统一屏蔽。 我尝试在logback中使用%替换方法。xml: 这是成功的(在用字符实体替换尖括号之后

  • 我有一个数组,我想屏蔽它,这样我就可以保持它的形状,即,不删除屏蔽的元素。 例如在此代码中 打印输入是对未屏蔽元素进行上述数学运算的结果,并返回一个没有屏蔽元素的1D数组。

  • 问题内容: 我正在尝试屏蔽Java中的密码。Sun Java已提出一种掩盖密码的方法,如下所示。 屏蔽密码 它使用一种简单的方法来做到这一点。 但是这种方法有几个缺点。 如果用户使用箭头键+删除键,则会显示密码。 如果用户不小心同时按下了两个键(极高的打字速度),某些字符将不会被掩盖。 你们认为有什么方法可以获得100%正确的遮罩吗? 问题答案: 使用Console.readPassword()。

  • 屏蔽IP 可以在此设置屏蔽蜘蛛爬的IP,点击右上角添加需要屏蔽的IP即可

  • 问题内容: 所以我需要屏蔽一个SSN#输入字段,假设ssn是,我需要显示(他们输入每个数字时都是实时的),但是我仍然需要保留原始值以提交。 如果用户严格输入值,我可以做到这一点,但是如果用户执行其他任何操作(如删除或将光标移动到随机位置并添加/删除数字,复制粘贴/删除等),它就会中断如果可能的话,我真的不想听一堆事件来完成这项工作。 我还尝试过在输入字段的顶部放置一个div来显示被屏蔽的ssn,而

  • 告警屏蔽页面可以查看所有被屏蔽的告警。 告警屏蔽页面可以查看所有被屏蔽的告警,支持解除屏蔽的功能。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “监控/告警/告警屏蔽” 菜单项,进入告警屏蔽页面。 查看被屏蔽的告警 该功能用于查看被屏蔽的告警记录。被屏蔽的告警将不会向用户发送告警消息。 在告警屏蔽页面,查看被屏蔽的告警记录。 支持查看以下信息: 策略名称:触发告警的资源匹配的告警