【问题标题】:Masking data from exception message while logging记录时屏蔽异常消息中的数据
【发布时间】:2017-08-08 12:03:53
【问题描述】:

如果代码中出现任何异常,我们已经使用 logback 记录器记录了异常。 在记录时,我们直接将异常对象 e 传递给了错误方法。

从第三方 jar 抛出的异常包含用户名和密码等敏感信息。 目前,我们将用户名和密码作为代码中的私有字段。但似乎不适合检查检查日志消息进行字符串比较然后记录。

由于异常是由第三方 API 引发的,因此该异常的固定模式未知。这就是我们无法使用 %replace 的原因。

有什么好的方法可以屏蔽异常中的敏感数据?

【问题讨论】:

  • 您可以创建通用异常处理程序,该处理程序将通过字符串比较过滤该信息。有可能吗?
  • 如果您不知道消息中的敏感数据是什么样子以及如何可靠地定位它(例如位置或周围模式),您可以选择不记录任何内容,尽可能多地屏蔽可能的(例如异常名称和堆栈跟踪之间的整个部分)或最好从根本上解决问题:在库中或至少在您记录异常的地方。
  • 你记录你需要的东西。如果您知道包含敏感数据的异常类型,只需记录一条准备好的简短消息
  • 其实对于当前的异常,我们知道要屏蔽什么。我们有用户名和密码值。但是我们必须在每个日志之前与值列表进行字符串比较。

标签: java exception logging


【解决方案1】:

如果您可以捕获/重新抛出异常,请将其包装到您自己的异常中,并在消息上使用字符串过滤器。

作为最后的解决方案,禁用此 API 包的日志记录

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多