Spring Boot 跟踪执行器正在记录出站请求中包含密码的 HTTP 正文

问题描述 投票:0回答:1
        MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
        map.set("username", "user1");
        map.set("password", "password1");

        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Arrays.asList(MediaType.APPLICATION_XML, MediaType.ALL));

        HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(map, headers);

        ResponseEntity<String> obj;

        obj = makeRESTCall(api, entity, HttpMethod.POST);

我继承了这个 Spring Boot 项目,我正在尝试改进日志记录。我想记录所有传入的请求和相应的响应。我决定尝试使用 SB 中内置的 httptrace Actuator。这个执行器运行良好,但它似乎记录了每个 HTTP 请求,包括传入和传出。

在上面的代码片段中,我的代码正在发出 POST 请求,并且用户名/密码包含在 HTTP 正文中。执行器捕获此出站请求并以纯文本形式记录密码。

我不希望日志中出现任何敏感信息。

我可以在 httptrace Actuator 配置中更改一些内容,以便它只记录传入请求吗?

也许我最好创建一个自定义过滤器来仅记录传入的请求和相应的响应?我不太关心记录传出的请求。

顺便说一句,日志记录是通过 log4j-to-slf4j 完成的

spring spring-boot logging log4j spring-boot-actuator
1个回答
0
投票

如果您的日志框架支持 MDC,则在调用之前在 MDC 中设置一个标志,并在调用之后将其删除。使用过滤器配置您的日志框架,以跳过在 MDC 中设置标志的事件的日志记录。

© www.soinside.com 2019 - 2024. All rights reserved.