Java 如何处理日志敏感数据(HTTP授权)?

Java 如何处理日志敏感数据(HTTP授权)?,java,security,logging,log4j,Java,Security,Logging,Log4j,假设我有一个webservice,它使用HTTP授权头。我正在对接收到的报头运行一些检查,如果它们没有通过,服务将返回一个错误 然而,我有一点问题,因为我想记录出了什么问题,但不想记录任何敏感信息 (也就是说,如果报头的检查失败,那么了解接收到的报头将非常有用)。目前我正在做这样的事情: @Override public Response service( HttpHeaders headers, ...) { if (!checkRequestHe

假设我有一个webservice,它使用HTTP授权头。我正在对接收到的报头运行一些检查,如果它们没有通过,服务将返回一个错误

然而,我有一点问题,因为我想记录出了什么问题,但不想记录任何敏感信息 (也就是说,如果报头的检查失败,那么了解接收到的报头将非常有用)。目前我正在做这样的事情:

@Override
public Response service( 
        HttpHeaders headers,
        ...) {


    if (!checkRequestHeaders(headers)) {
        getLog().warn("Invalid request headers: "
                + "request=" + ui.getAbsolutePath()
                + "headers=" + headers);
        return Response.status(Response.Status.BAD_REQUEST).build();
    }
我的第一个想法是只从日志调用中删除HTTP授权头(尽管由于HttpHeaders是不可变的,代码将比我希望的要复杂一些)


所以现在我想知道是否有更好的方法从日志中排除或混淆敏感信息,或者我是否想得太多了。是否有一个共同的方法来做这件事?在这种情况下你通常做什么?

我认为你想得太多了。http头上的任何敏感信息在没有解密的情况下都不应该被访问。你想得太多了。你可以在敏感标题前加上前缀,并在前缀上进行过滤,以避免记录它们。我认为你想得太多了。http头上的任何敏感信息在没有解密的情况下都不应该被访问。你想得太多了。您可以在敏感标题前面加上前缀,并在该前缀上进行筛选,以避免记录它们。