killbill-memoizeit

obfuscators: simply replace sensitive data with * The original

10/14/2016 7:46:08 AM

Details

diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/log/obfuscators/Obfuscator.java b/profiles/killbill/src/main/java/org/killbill/billing/server/log/obfuscators/Obfuscator.java
index bf37cca..cd4426d 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/log/obfuscators/Obfuscator.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/log/obfuscators/Obfuscator.java
@@ -34,17 +34,7 @@ public abstract class Obfuscator {
 
     protected static final int DEFAULT_PATTERN_FLAGS = Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL;
 
-    protected static final String MASK_LABEL = "MASKED";
-    protected static final int MASK_LABEL_LENGTH = MASK_LABEL.length();
     protected static final char PAD_CHAR = '*';
-    protected static final int MASK_LOOKUPS_SIZE = 20;
-    protected final String[] MASK_LOOKUPS = new String[MASK_LOOKUPS_SIZE];
-
-    public Obfuscator() {
-        for (int i = 0; i < MASK_LOOKUPS.length; i++) {
-            MASK_LOOKUPS[i] = buildMask(i);
-        }
-    }
 
     public abstract String obfuscate(final String originalString, final ILoggingEvent event);
 
@@ -111,33 +101,6 @@ public abstract class Obfuscator {
     @VisibleForTesting
     String obfuscateConfidentialData(final CharSequence confidentialSequence, @Nullable final CharSequence unmasked) {
         final int maskedLength = unmasked == null ? confidentialSequence.length() : confidentialSequence.length() - unmasked.length();
-        if (maskedLength < MASK_LOOKUPS_SIZE) {
-            return MASK_LOOKUPS[maskedLength];
-        } else {
-            return buildMask(maskedLength);
-        }
-    }
-
-    /**
-     * Create a masking string with the given length.
-     *
-     * @param maskedLength obfuscated String length
-     * @return a mask string
-     */
-    private String buildMask(final int maskedLength) {
-        final int pads = maskedLength - MASK_LABEL_LENGTH;
-        final StringBuilder mask = new StringBuilder(maskedLength);
-        if (pads <= 0) {
-            mask.append(MASK_LABEL);
-        } else {
-            for (int i = 0; i < pads / 2; i++) {
-                mask.append(PAD_CHAR);
-            }
-            mask.append(MASK_LABEL);
-            while (mask.length() < maskedLength) {
-                mask.append(PAD_CHAR);
-            }
-        }
-        return mask.toString();
+        return new String(new char[maskedLength]).replace('\0', PAD_CHAR);
     }
 }
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestConfigMagicObfuscator.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestConfigMagicObfuscator.java
index fb6d67e..51a41c7 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestConfigMagicObfuscator.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestConfigMagicObfuscator.java
@@ -31,19 +31,19 @@ public class TestConfigMagicObfuscator extends ServerTestSuiteNoDB {
     @Test(groups = "fast")
     public void testKey() throws Exception {
         verify("Assigning value [pass2b78b7cef] for [org.killbill.billing.plugin.avatax.licenseKey] on [org.killbill.billing.plugins.avatax#getLicenseKey()]",
-               "Assigning value [***MASKED****] for [org.killbill.billing.plugin.avatax.licenseKey] on [org.killbill.billing.plugins.avatax#getLicenseKey()]");
+               "Assigning value [*************] for [org.killbill.billing.plugin.avatax.licenseKey] on [org.killbill.billing.plugins.avatax#getLicenseKey()]");
 
         verify("Assigning value [pass2b78b7cef] for [org.killbill.billing.plugin.avatax.apiKey] on [org.killbill.billing.plugins.avatax#getApiKey()]",
-               "Assigning value [***MASKED****] for [org.killbill.billing.plugin.avatax.apiKey] on [org.killbill.billing.plugins.avatax#getApiKey()]");
+               "Assigning value [*************] for [org.killbill.billing.plugin.avatax.apiKey] on [org.killbill.billing.plugins.avatax#getApiKey()]");
     }
 
     @Test(groups = "fast")
     public void testPassword() throws Exception {
         verify("Assigning value [pass2b78b7ce] for [org.killbill.dao.pass] on [org.killbill.commons.jdbi.guice.DaoConfig#getPass()]",
-               "Assigning value [***MASKED***] for [org.killbill.dao.pass] on [org.killbill.commons.jdbi.guice.DaoConfig#getPass()]");
+               "Assigning value [************] for [org.killbill.dao.pass] on [org.killbill.commons.jdbi.guice.DaoConfig#getPass()]");
 
         verify("Assigning value [pass2b78b7ce] for [org.killbill.dao.password] on [org.killbill.commons.jdbi.guice.DaoConfig#getPassword()]",
-               "Assigning value [***MASKED***] for [org.killbill.dao.password] on [org.killbill.commons.jdbi.guice.DaoConfig#getPassword()]");
+               "Assigning value [************] for [org.killbill.dao.password] on [org.killbill.commons.jdbi.guice.DaoConfig#getPassword()]");
     }
 
     private void verify(final String input, final String output) {
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestLuhnMaskingObfuscator.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestLuhnMaskingObfuscator.java
index 405d984..29d51ef 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestLuhnMaskingObfuscator.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestLuhnMaskingObfuscator.java
@@ -50,17 +50,17 @@ public class TestLuhnMaskingObfuscator extends ServerTestSuiteNoDB {
 
     @Test(groups = "fast")
     public void testConvert() {
-        verify("try 5137 0049 8639 6404 and 5137 0049 8639 6403", "try 5137 0049 8639 6404 and 513700*MASKED*6403");
+        verify("try 5137 0049 8639 6404 and 5137 0049 8639 6403", "try 5137 0049 8639 6404 and 513700********6403");
     }
 
     @Test(groups = "fast")
     public void testConvertCcNumberAtStartNonCcNumberAtEnd() {
-        verify("5137 0049 8639 6403 and 5137 0049 8639 6404", "513700*MASKED*6403 and 5137 0049 8639 6404");
+        verify("5137 0049 8639 6403 and 5137 0049 8639 6404", "513700********6403 and 5137 0049 8639 6404");
     }
 
     @Test(groups = "fast")
     public void testConvertMultiple() {
-        verify("try 5137 0049 8639 6403 multiple 5137 0049 8639 6404 possible 4111-1111-1111 1111 card 4111111111111112 numbers", "try 513700*MASKED*6403 multiple 5137 0049 8639 6404 possible 411111*MASKED*1111 card 4111111111111112 numbers");
+        verify("try 5137 0049 8639 6403 multiple 5137 0049 8639 6404 possible 4111-1111-1111 1111 card 4111111111111112 numbers", "try 513700********6403 multiple 5137 0049 8639 6404 possible 411111********1111 card 4111111111111112 numbers");
     }
 
     @Test(groups = "fast")
@@ -102,41 +102,41 @@ public class TestLuhnMaskingObfuscator extends ServerTestSuiteNoDB {
                + "Switch/Solo (Paymentech)"
                + "6331101999990016",
                "American Express"
-               + "378282MASKED0005"
+               + "378282*****0005"
                + "American Express"
-               + "371449MASKED8431"
+               + "371449*****8431"
                + "American Express Corporate"
-               + "378734MASKED1000"
+               + "378734*****1000"
                + "Australian BankCard"
-               + "561059MASKED8250"
+               + "561059******8250"
                + "Diners Club"
-               + "305693MASKED5904"
+               + "305693****5904"
                + "Diners Club"
-               + "385200MASKED3237"
+               + "385200****3237"
                + "Discover"
-               + "601111MASKED1117"
+               + "601111******1117"
                + "Discover"
-               + "601100MASKED9424"
+               + "601100******9424"
                + "JCB"
-               + "353011MASKED0000"
+               + "353011******0000"
                + "JCB"
-               + "356600MASKED0505"
+               + "356600******0505"
                + "MasterCard"
-               + "555555MASKED4444"
+               + "555555******4444"
                + "MasterCard"
-               + "510510MASKED5100"
+               + "510510******5100"
                + "Visa"
-               + "411111MASKED1111"
+               + "411111******1111"
                + "Visa"
-               + "401288MASKED1881"
+               + "401288******1881"
                + "Visa"
-               + "422222MASKED2222"
+               + "422222***2222"
                + "Note : Even though this number has a different character count than the other test numbers, it is the correct and functional number."
                + "Processor-specific Cards"
                + "Dankort (PBS)"
-               + "501971MASKED3742"
+               + "501971******3742"
                + "Switch/Solo (Paymentech)"
-               + "633110MASKED0016");
+               + "633110******0016");
     }
 
     @Test(groups = "fast")
@@ -235,7 +235,7 @@ public class TestLuhnMaskingObfuscator extends ServerTestSuiteNoDB {
                "1 > Content-Type: application/json\n" +
                "1 > Accept: */*",
                "1 * Server in-bound request\n" +
-               "1 > POST http://127.0.0.1:8080/1.0/kb/accounts/2a55045a-ce1d-4344-942d-b825536328f9/payments?pluginProperty=cc_number=411111MASKED1111\n" +
+               "1 > POST http://127.0.0.1:8080/1.0/kb/accounts/2a55045a-ce1d-4344-942d-b825536328f9/payments?pluginProperty=cc_number=411111******1111\n" +
                "1 > X-Killbill-ApiSecret: lazar\n" +
                "1 > Authorization: Basic YWRtaW46cGFzc3dvcmQ=\n" +
                "1 > X-Killbill-CreatedBy: admin\n" +
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscator.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscator.java
index 5109ad3..b36c2a5 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscator.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscator.java
@@ -41,7 +41,7 @@ public class TestObfuscator extends ServerTestSuiteNoDB {
         final Pattern pattern = Pattern.compile("number=([^;]+)");
         final ImmutableList<Pattern> patterns = ImmutableList.<Pattern>of(pattern);
         Assert.assertEquals(obfuscator.obfuscate("number=1234;number=12345;number=123456;number=1234567;number=12345678;number=123456789", patterns, Mockito.mock(ILoggingEvent.class)),
-                            "number=MASKED;number=MASKED;number=MASKED;number=MASKED*;number=*MASKED*;number=*MASKED**");
+                            "number=****;number=*****;number=******;number=*******;number=********;number=*********");
 
     }
 
@@ -51,12 +51,12 @@ public class TestObfuscator extends ServerTestSuiteNoDB {
         final Pattern pattern2 = Pattern.compile("numberB=([^;]+)");
         final ImmutableList<Pattern> patterns = ImmutableList.<Pattern>of(pattern1, pattern2);
         Assert.assertEquals(obfuscator.obfuscate("number=1234;numberB=12345;number=123456;numberB=1234567;number=12345678;numberB=123456789", patterns, Mockito.mock(ILoggingEvent.class)),
-                            "number=MASKED;numberB=MASKED;number=MASKED;numberB=MASKED*;number=*MASKED*;numberB=*MASKED**");
+                            "number=****;numberB=*****;number=******;numberB=*******;number=********;numberB=*********");
 
     }
 
     @Test(groups = "fast")
     public void testObfuscateConfidentialData() {
-        Assert.assertEquals(obfuscator.obfuscateConfidentialData("5137004986396403", "6403"), "***MASKED***");
+        Assert.assertEquals(obfuscator.obfuscateConfidentialData("5137004986396403", "6403"), "************");
     }
 }
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscatorConverter.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscatorConverter.java
index 1a12413..4d54512 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscatorConverter.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscatorConverter.java
@@ -54,9 +54,9 @@ public class TestObfuscatorConverter extends ServerTestSuiteNoDB {
                "</gateway>",
                "Starting purchase call: \n" +
                "<gateway>\n" +
-               "<card>411111MASKED1111</card>\n" +
-               "<bankAccountNumber>*MASKED**</bankAccountNumber>\n" +
-               "<password>**MASKED***</password>\n" +
+               "<card>411111******1111</card>\n" +
+               "<bankAccountNumber>*********</bankAccountNumber>\n" +
+               "<password>***********</password>\n" +
                "</gateway>");
     }
 
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestPatternObfuscator.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestPatternObfuscator.java
index 3476f58..11d9162 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestPatternObfuscator.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestPatternObfuscator.java
@@ -45,16 +45,16 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
                "</ns2:shopperName>\n",
                "<ns:expiryMonth>04</expiryMonth>\n" +
                "<ns:expiryYear>2015</expiryYear>\n" +
-               "<ns:holderName>*MASKED*</holderName>\n" +
-               "<ns:number>*****MASKED*****</number>\n" +
-               "<ns2:shopperEmail>****MASKED*****</ns2:shopperEmail>\n" +
+               "<ns:holderName>********</holderName>\n" +
+               "<ns:number>****************</number>\n" +
+               "<ns2:shopperEmail>***************</ns2:shopperEmail>\n" +
                "<ns2:shopperIP>127.0.0.1</ns2:shopperIP>\n" +
                "<ns2:shopperInteraction xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"true\"/>\n" +
                "<ns2:shopperName>\n" +
-               "    <firstName>MASKED</firstName>\n" +
+               "    <firstName>***</firstName>\n" +
                "    <gender xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"true\"/>\n" +
                "    <infix xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"true\"/>\n" +
-               "    <lastName>MASKED</lastName>\n" +
+               "    <lastName>*****</lastName>\n" +
                "</ns2:shopperName>\n");
     }
 
@@ -131,25 +131,25 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
                "      <clientLibraryVersion>1.47.0</clientLibraryVersion>\n" +
                "      <clientEnvironment>java</clientEnvironment>\n" +
                "<billTo>\n" +
-               "  <firstName>MASKED</firstName>\n" +
-               "  <lastName>MASKED</lastName>\n" +
+               "  <firstName>****</firstName>\n" +
+               "  <lastName>***</lastName>\n" +
                "  <street1>5, oakriu road</street1>\n" +
                "  <street2>apt. 298</street2>\n" +
                "  <city>Gdio Foia</city>\n" +
                "  <state>FL</state>\n" +
                "  <postalCode>49302</postalCode>\n" +
                "  <country>US</country>\n" +
-               "  <email>**********MASKED**********</email>\n" +
+               "  <email>**************************</email>\n" +
                "</billTo>\n" +
                "<purchaseTotals>\n" +
                "  <currency>USD</currency>\n" +
                "  <grandTotalAmount>0.00</grandTotalAmount>\n" +
                "</purchaseTotals>\n" +
                "<card>\n" +
-               "  <accountNumber>*****MASKED*****</accountNumber>\n" +
+               "  <accountNumber>****************</accountNumber>\n" +
                "  <expirationMonth>12</expirationMonth>\n" +
                "  <expirationYear>2017</expirationYear>\n" +
-               "  <cvNumber>MASKED</cvNumber>\n" +
+               "  <cvNumber>****</cvNumber>\n" +
                "  <cardType>001</cardType>\n" +
                "</card>\n" +
                "<subscription>\n" +
@@ -171,7 +171,7 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
     @Test(groups = "fast")
     public void testLitle() throws Exception {
         verify("<litleOnlineRequest merchantId=\\\"merchant_id\\\" version=\\\"8.18\\\" xmlns=\\\"http://www.litle.com/schema\\\"><authentication><user>login</user><password>password</password></authentication><sale id=\\\"615b9cb3-8580-4f57-bf69-9\\\" reportGroup=\\\"Default Report Group\\\"><orderId>615b9cb3-8580-4f57-bf69-9</orderId><amount>10000</amount><orderSource>ecommerce</orderSource><billToAddress><name>John Doe</name><email>1428325948-test@tester.com</email><addressLine1>5, oakriu road</addressLine1><addressLine2>apt. 298</addressLine2><city>Gdio Foia</city><state>FL</state><zip>49302</zip><country>US</country></billToAddress><shipToAddress/><card><type>VI</type><number>4242424242424242</number><expDate>1217</expDate><cardValidationNum>1234</cardValidationNum></card></sale></litleOnlineRequest>",
-               "<litleOnlineRequest merchantId=\\\"merchant_id\\\" version=\\\"8.18\\\" xmlns=\\\"http://www.litle.com/schema\\\"><authentication><user>login</user><password>*MASKED*</password></authentication><sale id=\\\"615b9cb3-8580-4f57-bf69-9\\\" reportGroup=\\\"Default Report Group\\\"><orderId>615b9cb3-8580-4f57-bf69-9</orderId><amount>10000</amount><orderSource>ecommerce</orderSource><billToAddress><name>*MASKED*</name><email>**********MASKED**********</email><addressLine1>5, oakriu road</addressLine1><addressLine2>apt. 298</addressLine2><city>Gdio Foia</city><state>FL</state><zip>49302</zip><country>US</country></billToAddress><shipToAddress/><card><type>VI</type><number>*****MASKED*****</number><expDate>1217</expDate><cardValidationNum>MASKED</cardValidationNum></card></sale></litleOnlineRequest>");
+               "<litleOnlineRequest merchantId=\\\"merchant_id\\\" version=\\\"8.18\\\" xmlns=\\\"http://www.litle.com/schema\\\"><authentication><user>login</user><password>********</password></authentication><sale id=\\\"615b9cb3-8580-4f57-bf69-9\\\" reportGroup=\\\"Default Report Group\\\"><orderId>615b9cb3-8580-4f57-bf69-9</orderId><amount>10000</amount><orderSource>ecommerce</orderSource><billToAddress><name>********</name><email>**************************</email><addressLine1>5, oakriu road</addressLine1><addressLine2>apt. 298</addressLine2><city>Gdio Foia</city><state>FL</state><zip>49302</zip><country>US</country></billToAddress><shipToAddress/><card><type>VI</type><number>****************</number><expDate>1217</expDate><cardValidationNum>****</cardValidationNum></card></sale></litleOnlineRequest>");
     }
 
     @Test(groups = "fast")
@@ -203,7 +203,7 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
                "  \"card\": {\n" +
                "    \"id\": \"card_483etw4er9fg4vF3sQdrt3FG\",\n" +
                "    \"object\": \"card\",\n" +
-               "    \"banknumber\": *****MASKED*****,\n" +
+               "    \"banknumber\": ****************,\n" +
                "    \"last4\": \"0000\",\n" +
                "    \"brand\": \"Visa\",\n" +
                "    \"funding\": \"credit\",\n" +
@@ -211,7 +211,7 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
                "    \"exp_year\": 2019,\n" +
                "    \"fingerprint\": \"HOh74kZU387WlUvy\",\n" +
                "    \"country\": \"US\",\n" +
-               "    \"name\": **MASKED***,\n" +
+               "    \"name\": ***********,\n" +
                "    \"address_line1\": null,\n" +
                "    \"address_line2\": null,\n" +
                "    \"address_city\": null,\n" +
@@ -244,7 +244,7 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
                "</entry>\n",
                "<entry>\n" +
                "  <key xsi:type=\"xsd:string\">PayU.ccvv</key>\n" +
-               "  <value xsi:type=\"xsd:string\">MASKED</value>\n" +
+               "  <value xsi:type=\"xsd:string\">****</value>\n" +
                "</entry>\n" +
                "<entry>\n" +
                "  <key xsi:type=\"xsd:string\">PayU.ccnum</key>\n" +
@@ -263,7 +263,7 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
     @Test(groups = "fast", description = "Test for ActiveMerchant wiredump_device logging")
     public void testWithQuotedNewLines() throws Exception {
         verify("[cybersource-plugin] \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><accountNumber>4111111111111111</accountNumber>\\n  <expirationMonth>09</expirationMonth>\\n  \"",
-               "[cybersource-plugin] \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><accountNumber>*****MASKED*****</accountNumber>\\n  <expirationMonth>09</expirationMonth>\\n  \"");
+               "[cybersource-plugin] \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><accountNumber>****************</accountNumber>\\n  <expirationMonth>09</expirationMonth>\\n  \"");
     }
 
     @Test(groups = "fast")