打开调试日志记录时,apache httpclient以明文形式记录密码

时间:2013-07-30 18:51:56

标签: java apache httpclient

Apache httpclient似乎在打开调试日志记录时以明文形式记录密码。

有没有办法禁用它?这样我就可以看到其余的调试日志而不是凭据?

2 个答案:

答案 0 :(得分:5)

在网络上发送密码之前,请在内存中创建密码的SHA1哈希值。

MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] sha1hash = new byte[40];
md.update(text.getBytes("UTF-8"), 0, text.length()); // TODO verify the lengths are the same
sha1hash = md.digest();

http://www.mkyong.com/java/java-sha-hashing-example/

如果你绝对需要明文密码,你有几种选择:

  1. 您可以禁用标头的日志记录或将其设置为高于调试的级别:Disable HttpClient logging

  2. 您可以在发送密码之前动态禁用日志记录,然后重新打开:Dynamically configuring Apache Http client

  3. 您可以实现自己的Logger处理程序/格式化程序或其中一个基本处理程序,并在输出中搜索您的密码,并将其替换为XXXXXXXXX。然后将处理程序设置为您的类:https://hc.apache.org/httpcomponents-client-ga/logging.html

答案 1 :(得分:1)

在log4j.properties中设置

log4j.logger.httpclient.wire.level=WARN