This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch 3.5.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 674eb17a1c55953389e4254af511bb52a4644fe5 Author: Gaƫtan Pitteloud <gaetan.pittel...@generali.com> AuthorDate: Tue Mar 12 01:05:22 2024 +0100 [CXF-8982] add optional namespace prefix in template (#1721) * [CXF-8982] add optional namespace prefix in template * [CXF-8982] add more characters to namespace prefix following W3C * [CXF-8982] fixed checkstyle errors (cherry picked from commit 275aa9f2c1b95b609ad7e0a4dc1c80d9e132924a) (cherry picked from commit ba28396bbe6e2c457ca4b62a110048e71a6bdaa2) # Conflicts: # rt/features/logging/src/test/java/org/apache/cxf/ext/logging/MaskSensitiveHelperTest.java --- .../java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java | 11 ++++++++--- .../org/apache/cxf/ext/logging/MaskSensitiveHelperTest.java | 12 ++++++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java index 062a0e4d4b..94f2aa7c4a 100644 --- a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java +++ b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/MaskSensitiveHelper.java @@ -27,8 +27,13 @@ import org.apache.cxf.message.Message; public class MaskSensitiveHelper { private static final String ELEMENT_NAME_TEMPLATE = "-ELEMENT_NAME-"; - private static final String MATCH_PATTERN_XML_TEMPLATE = "(<-ELEMENT_NAME-.*?>)(.*?)(</-ELEMENT_NAME->)"; - private static final String REPLACEMENT_XML_TEMPLATE = "$1XXX$3"; + // see https://www.w3.org/TR/REC-xml-names/#NT-NCName for allowed chars in namespace prefix + private static final String PATTERN_XML_NAMESPACE_PREFIX = "[\\w.\\-\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6" + + "\\u00F8-\\u02FF\\u0300-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F" + + "\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]+"; + private static final String MATCH_PATTERN_XML_TEMPLATE = "(<(" + PATTERN_XML_NAMESPACE_PREFIX + + ":)?-ELEMENT_NAME-.*?>)(.*?)(</(" + PATTERN_XML_NAMESPACE_PREFIX + ":)?-ELEMENT_NAME->)"; + private static final String REPLACEMENT_XML_TEMPLATE = "$1XXX$4"; private static final String MATCH_PATTERN_JSON_TEMPLATE = "\"-ELEMENT_NAME-\"[ \\t]*:[ \\t]*\"(.*?)\""; private static final String REPLACEMENT_JSON_TEMPLATE = "\"-ELEMENT_NAME-\": \"XXX\""; private static final String MASKED_HEADER_VALUE = "XXX"; @@ -55,7 +60,7 @@ public class MaskSensitiveHelper { replacementsJSON.clear(); addSensitiveElementNames(inSensitiveElementNames); } - + public void addSensitiveElementNames(final Set<String> inSensitiveElementNames) { for (final String sensitiveName : inSensitiveElementNames) { addReplacementPair(MATCH_PATTERN_XML_TEMPLATE, REPLACEMENT_XML_TEMPLATE, sensitiveName, replacementsXML); diff --git a/rt/features/logging/src/test/java/org/apache/cxf/ext/logging/MaskSensitiveHelperTest.java b/rt/features/logging/src/test/java/org/apache/cxf/ext/logging/MaskSensitiveHelperTest.java index 46450d9797..a61e5032b8 100644 --- a/rt/features/logging/src/test/java/org/apache/cxf/ext/logging/MaskSensitiveHelperTest.java +++ b/rt/features/logging/src/test/java/org/apache/cxf/ext/logging/MaskSensitiveHelperTest.java @@ -45,6 +45,7 @@ import static org.junit.Assert.assertNotNull; @RunWith(Parameterized.class) public class MaskSensitiveHelperTest { + private static final String SENSITIVE_LOGGING_CONTENT_XML = "<user>testUser</user><password>my secret password</password>"; private static final String MASKED_LOGGING_CONTENT_XML = @@ -59,7 +60,7 @@ public class MaskSensitiveHelperTest { "\"user\":\"testUser\", \"password\": \"my secret password\""; private static final String MASKED_LOGGING_CONTENT_JSON = "\"user\":\"testUser\", \"password\": \"XXX\""; - + private static final String SENSITIVE_LOGGING_MULTIPLE_ELEMENT_XML = "<item><user>testUser1</user><password myAttribute=\"test\">my secret password 1</password></item>" + "<item><user>testUser2</user><password>my secret password 2</password></item>"; @@ -67,7 +68,13 @@ public class MaskSensitiveHelperTest { "<item><user>testUser1</user><password myAttribute=\"test\">XXX</password></item>" + "<item><user>testUser2</user><password>XXX</password></item>"; - private static final Set<String> SENSITIVE_ELEMENTS = new HashSet(Arrays.asList("password")); + private static final String SENSITIVE_LOGGING_CONTENT_XML_WITH_NAMESPACE = + "<ns:user>testUser</ns:user><ns:password>my secret password</ns:password>"; + + private static final String MASKED_LOGGING_CONTENT_XML_WITH_NAMESPACE = + "<ns:user>testUser</ns:user><ns:password>XXX</ns:password>"; + + private static final Set<String> SENSITIVE_ELEMENTS = new HashSet<>(Arrays.asList("password")); private static final String APPLICATION_XML = "application/xml"; private static final String APPLICATION_JSON = "application/json"; @@ -87,6 +94,7 @@ public class MaskSensitiveHelperTest { {SENSITIVE_LOGGING_CONTENT_XML, MASKED_LOGGING_CONTENT_XML, APPLICATION_XML}, {SENSITIVE_LOGGING_CONTENT_XML_WITH_ATTRIBUTE, MASKED_LOGGING_CONTENT_XML_WITH_ATTRIBUTE, APPLICATION_XML}, {SENSITIVE_LOGGING_MULTIPLE_ELEMENT_XML, MASKED_LOGGING_MULTIPLE_ELEMENT_XML, APPLICATION_XML}, + {SENSITIVE_LOGGING_CONTENT_XML_WITH_NAMESPACE, MASKED_LOGGING_CONTENT_XML_WITH_NAMESPACE, APPLICATION_XML}, {SENSITIVE_LOGGING_CONTENT_JSON, MASKED_LOGGING_CONTENT_JSON, APPLICATION_JSON} }); }