You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by as...@apache.org on 2020/10/25 12:04:01 UTC
[cxf] 01/01: CXF-8359: fixed mask for XML elements containing
attributes
This is an automated email from the ASF dual-hosted git repository.
ashakirin pushed a commit to branch CXF-8359_mask_senstive_logging_fix_attribute
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 2f4a36ea8ab2c23b8ccfd9522a948b5aca3fe39c
Author: ashakirin <49...@users.noreply.github.com>
AuthorDate: Sun Oct 25 13:03:39 2020 +0100
CXF-8359: fixed mask for XML elements containing attributes
---
.../apache/cxf/ext/logging/MaskSensitiveHelper.java | 19 ++++++++++++-------
.../cxf/ext/logging/MaskSensitiveHelperTest.java | 6 ++++++
2 files changed, 18 insertions(+), 7 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 f8c5b25..f9cf1a9 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
@@ -20,6 +20,7 @@ package org.apache.cxf.ext.logging;
import java.util.HashSet;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.regex.Pattern;
@@ -27,9 +28,9 @@ 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 MATCH_PATTERN_XML_TEMPLATE = "(<-ELEMENT_NAME-.*>)(.*?)(</-ELEMENT_NAME->)";
+ private static final String REPLACEMENT_XML_TEMPLATE = "$1XXX$3";
private static final String MATCH_PATTERN_JSON_TEMPLATE = "\"-ELEMENT_NAME-\"[ \\t]*:[ \\t]*\"(.*?)\"";
- private static final String REPLACEMENT_XML_TEMPLATE = "<-ELEMENT_NAME->XXX</-ELEMENT_NAME->";
private static final String REPLACEMENT_JSON_TEMPLATE = "\"-ELEMENT_NAME-\": \"XXX\"";
private static final String MASKED_HEADER_VALUE = "XXX";
@@ -70,15 +71,19 @@ public class MaskSensitiveHelper {
final Message message,
final String originalLogString) {
if (replacementsXML.isEmpty() && replacementsJSON.isEmpty()
- || message == null
|| originalLogString == null) {
return originalLogString;
}
- final String contentType = (String) message.get(Message.CONTENT_TYPE);
- if (contentType.toLowerCase().contains(XML_CONTENT)
- || contentType.toLowerCase().contains(HTML_CONTENT)) {
+ final Optional<String> contentType = Optional.ofNullable(message)
+ .map(m -> (String) m.get(Message.CONTENT_TYPE));
+ if (!contentType.isPresent()) {
+ return originalLogString;
+ }
+ final String lowerCaseContentType = contentType.get().toLowerCase();
+ if (lowerCaseContentType.contains(XML_CONTENT)
+ || lowerCaseContentType.contains(HTML_CONTENT)) {
return applyMasks(originalLogString, replacementsXML);
- } else if (contentType.toLowerCase().contains(JSON_CONTENT)) {
+ } else if (lowerCaseContentType.contains(JSON_CONTENT)) {
return applyMasks(originalLogString, replacementsJSON);
}
return originalLogString;
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 3e1f5d1..a6d6f3a 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
@@ -50,6 +50,11 @@ public class MaskSensitiveHelperTest {
private static final String MASKED_LOGGING_CONTENT_XML =
"<user>testUser</user><password>XXX</password>";
+ private static final String SENSITIVE_LOGGING_CONTENT_XML_WITH_ATTRIBUTE =
+ "<user>testUser</user><password myAttribute=\"test\">my secret password</password>";
+ private static final String MASKED_LOGGING_CONTENT_XML_WITH_ATTRIBUTE =
+ "<user>testUser</user><password myAttribute=\"test\">XXX</password>";
+
private static final String SENSITIVE_LOGGING_CONTENT_JSON =
"\"user\":\"testUser\", \"password\": \"my secret password\"";
private static final String MASKED_LOGGING_CONTENT_JSON =
@@ -73,6 +78,7 @@ public class MaskSensitiveHelperTest {
public static Collection primeNumbers() {
return Arrays.asList(new Object[][] {
{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_CONTENT_JSON, MASKED_LOGGING_CONTENT_JSON, APPLICATION_JSON}
});
}