我需要屏蔽日志文件中的几个字段。 像信用卡信息或密码。 我们有直接的方法吗? 或者我们必须为日志字段写入任何代码片段以掩盖那些信用卡信息,以便在日志文件中将这些信息掩盖。 例: CreditcardNo:411111111111应该在日志文件中显示为********* 1111 密码Password123应该在日志中显示为***********
我正在使用log4j将信息写入日志。
答案 0 :(得分:3)
您可以通过从log4j切换到Logback并配置日志记录模式来屏蔽Spring Boot记录的敏感数据。
使用Logback。这是一个default logging option of Spring Boot
使用convertion word在logging.pattern.file
中定义application.properties
,用掩码替换每个密码:
logging.pattern.file=%d %replace(%m){"password='.*'", "password='xxx'"}
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %replace(%m){"password='.*'", "password='xxx'"}%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}
答案 1 :(得分:0)
对于使用spring-ws的SOAP WebServices,我使用了lib:
<groupId>com.github.spartatech</groupId>
<artifactId>spring-ws-utils</artifactId>
要使用此功能,您应配置一个屏蔽字段的拦截器。使用XSLT完成屏蔽。它的工作方式是(这个例子使用spring XML coinfiguration,但您也可以使用基于Java的配置进行配置):
配置spring-ws拦截器:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sws="http://www.springframework.org/schema/web-services"
xsi:schemaLocation="
http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd
>
...
<sws:interceptors>
<bean class="org.sparta.springwsutils.PayloadTransformedLoggingInterceptor">
<property name="xslt" value="classpath:xslt/maskInput.xslt"/>
</bean>
</sws:interceptors>
然后创建文件:src / main / resources / xslt / maskInput.xslt 该文件将包含所有XML转换以掩盖您的字段:
示例:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:typ="http://your/schema_name"
version="1.0">
<!-- copy all document -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<!-- mask cerditCard -->
<xsl:template match="typ:creditCard">
<xsl:copy>
<!-- Mask beginning of the Field -->
<xsl:value-of select="substring('*****************************************', 1, string-length(.)-4)"/>
<xsl:value-of select="substring(.,string-length(.)-3,string-length(.)+1)" />
</xsl:copy>
</xsl:template>
然后在日志配置文件中确保禁用MessageTracing日志并启用PayloadTransformedLoggingInterceptor日志记录。 回溯示例:
<logger name="org.springframework.ws.client.MessageTracing" level="ERROR"/>
<logger name="org.sparta.springwsutils.PayloadTransformedLoggingInterceptor" level="INFO" />