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

xhv8bpkk  于 2022-12-12  发布在  Spring
关注(0)|答案(2)|浏览(178)

我需要在日志文件中的几个字段被屏蔽。像信用卡信息或密码。我们有任何直接的方法来做到这一点吗?或任何代码块,我们必须写在日志字段来屏蔽这些信用卡信息,使这些将appreaed掩码在日志文件中。例如:信用卡号:411111111111应在日志文件中显示为**********1111密码密码123应在日志中显示为***********
我使用log4j将信息写入日志。

vaj7vani

vaj7vani1#

您可以通过从log4j切换到Logback并配置日志记录模式来屏蔽Sping Boot 记录的敏感数据。
1.使用Logback。它是default logging option of Spring Boot
1.在application.properties中定义logging.pattern.file,使用转换字将每个密码替换为掩码:

  • 例如logging.pattern.file=%d %replace(%m){"password='.*'", "password='xxx'"}
  • 默认的Sping Boot 回登录文件模式]将为: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}
5vf7fwbs

5vf7fwbs2#

对于使用spring-ws的SOAP Web服务,我使用了lib:

<groupId>com.github.spartatech</groupId>
<artifactId>spring-ws-utils</artifactId>

要使用这个,你应该配置一个拦截器来屏蔽字段。屏蔽是使用XSLT完成的。它的工作方式是(这个例子使用spring XML配置,但是你也可以使用基于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" />

相关问题