Question

Dans nos journaux nous voyons des numéros de carte de crédit en raison des gens qui frappent certains des ULR dans notre application avec des informations CC (je ne sais pas pourquoi ils font cela). Nous voulons assainir ces informations (en raison de considérations PCI) et ne persistera pas même sur le disque.

Par conséquent, je veux être en mesure de désinfecter l'entrée du journal avant qu'elle ne touche le fichier journal. Je l'ai regardé Tomcat Vannes (Access Log Valve). Est-ce la voie à suivre?

Était-ce utile?

La solution

j'ai pu résoudre ce problème par l'extension AccessLogValve et dominante 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));
    }
}

Vous devez compiler ce dans un bocal, puis mettre ce fichier jar dans $CATALINA_HOME/lib.

Alors dans votre 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"'/>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top