屏蔽密码,日志文件中的信用卡信息

时间:2016-05-06 12:34:41

标签: spring-boot log4j

我需要屏蔽日志文件中的几个字段。 像信用卡信息或密码。 我们有直接的方法吗? 或者我们必须为日志字段写入任何代码片段以掩盖那些信用卡信息,以便在日志文件中将这些信息掩盖。 例: CreditcardNo:411111111111应该在日志文件中显示为********* 1111 密码Password123应该在日志中显示为***********

我正在使用log4j将信息写入日志。

2 个答案:

答案 0 :(得分:3)

您可以通过从log4j切换到Logback并配置日志记录模式来屏蔽Spring Boot记录的敏感数据。

  1. 使用Logback。这是一个default logging option of Spring Boot

  2. 使用convertion wordlogging.pattern.file中定义application.properties,用掩码替换每个密码:

    • e.g。logging.pattern.file=%d %replace(%m){"password='.*'", "password='xxx'"}
    • 对于默认的Spring Boot logback文件模式],它将是: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" />