Domanda

Nei nostri log che stiamo vedendo i numeri di carte di credito a causa di persone che colpiscono alcune delle ULRs nella nostra app con informazioni CC (non ho idea del perché lo stanno facendo). Vogliamo disinfettare queste informazioni (a causa di considerazioni PCI) e nemmeno persistere su disco.

Quindi, voglio essere in grado di disinfettare la voce del registro prima che colpisca il file di log. Ho cercato a Tomcat Valves (accesso Valve Log). E 'questa la strada da percorrere?

È stato utile?

Soluzione

sono stato in grado di risolvere questo problema estendendo AccessLogValve e prioritario public log(java.lang.String message) :

public class SanitizedAccessLogValve extends AccessLogValve {

    private static Pattern pattern = Pattern.compile("\\b(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})\\b");

    /*
     This method will sanitize any cc numbers in the string and replace them with x's
    */
    private String sanitize(String string) {
        String sanitizedString = string;

        if(string != null) {

            StringBuffer buffer = new StringBuffer();
            Matcher matcher = pattern.matcher(string);

            while(matcher.find()) {
                MatchResult matchResult = matcher.toMatchResult();

                int start = matchResult.start();
                int end = matchResult.end();

                String matchedText = string.substring(start, end);

                matcher.appendReplacement(buffer, "xxxxxxxxxxxxxxxx");                
            }

            matcher.appendTail(buffer);

            sanitizedString = buffer.toString();
        }

        return sanitizedString;
    }

    @Override
    public void log(String message) {
        super.log(sanitize(message));
    }
}

È necessario compilare questo in un vaso, e poi mettere il file jar in $CATALINA_HOME/lib.

Poi, nel tuo server.xml:

<Valve className="my.valves.SanitizedAccessLogValve"
       directory="access_logs"  prefix="localhost." suffix=".log"
       pattern='%v %h %t "%r" %s %B %T "%{User-Agent}i"'/>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top