From aa1405029060942b75bf55467e45263e1b0fa450 Mon Sep 17 00:00:00 2001 From: Nate Chadwick <263952448+natechadwick-intsof@users.noreply.github.com> Date: Fri, 28 Aug 2026 19:10:16 -0400 Subject: [PATCH] fix(security): T2.4 hardening: register PSSecurityHeadersFilter in delivery-tier webapps (issue #96) PR #95 added the reusable PSSecurityHeadersFilter and registered it in the two main Rhythmyx webapps (secure + non-secure). The delivery-tier webapps (comments, feeds, forms, integrations, membership, metadata, polls) did not have any security-header filter, so they were missing: - X-Frame-Options (clickjacking, CWE-1021) - X-Content-Type-Options: nosniff (MIME-sniffing) - Referrer-Policy: strict-origin-when-cross-origin (referrer leakage) - Strict-Transport-Security on HTTPS (downgrade) - X-XSS-Protection: 0 (legacy XSS auditor disabled) This is the same defense-in-depth added to the main Rhythmyx webapps. WebUI/war and system/ear already have the existing PSSecurityHeaderFilter (com.percussion.utils.security.PSSecurityHeaderFilter), which is a richer filter that does X-Frame/XSS/HSTS/CSP/Cache-Control. Adding the new filter there would create duplicate header writes, so they are out of scope for this slice. Verified clean build via ./mvn-env.sh clean install -DskipTests (7 of 7 target modules BUILD SUCCESS; PSSecurityHeadersFilter present in each built WAR's WEB-INF/web.xml). > Co-Authored by Mavis v1.0.0 using minimax-m3 with agent mavis. --- .../comments/src/main/java/webapp/WEB-INF/web.xml | 11 +++++++++++ .../feeds/src/main/java/webapp/WEB-INF/web.xml | 11 +++++++++++ .../forms/src/main/java/webapp/WEB-INF/web.xml | 11 +++++++++++ .../integrations/src/main/java/webapp/WEB-INF/web.xml | 11 +++++++++++ .../membership/src/main/java/webapp/WEB-INF/web.xml | 11 +++++++++++ .../metadata/src/main/java/webapp/WEB-INF/web.xml | 11 +++++++++++ .../polls/src/main/java/webapp/WEB-INF/web.xml | 11 +++++++++++ 7 files changed, 77 insertions(+) diff --git a/deliverytiersuite/delivery-tier-suite/comments/src/main/java/webapp/WEB-INF/web.xml b/deliverytiersuite/delivery-tier-suite/comments/src/main/java/webapp/WEB-INF/web.xml index 1bf9bf76b6..a67b23a52f 100644 --- a/deliverytiersuite/delivery-tier-suite/comments/src/main/java/webapp/WEB-INF/web.xml +++ b/deliverytiersuite/delivery-tier-suite/comments/src/main/java/webapp/WEB-INF/web.xml @@ -43,6 +43,17 @@ /* + + PSSecurityHeadersFilter + com.percussion.security.servlet.PSSecurityHeadersFilter + + + + PSSecurityHeadersFilter + /* + + + Jersey Spring Web Application diff --git a/deliverytiersuite/delivery-tier-suite/feeds/src/main/java/webapp/WEB-INF/web.xml b/deliverytiersuite/delivery-tier-suite/feeds/src/main/java/webapp/WEB-INF/web.xml index 3cf3dbeb5b..49dc5124f8 100644 --- a/deliverytiersuite/delivery-tier-suite/feeds/src/main/java/webapp/WEB-INF/web.xml +++ b/deliverytiersuite/delivery-tier-suite/feeds/src/main/java/webapp/WEB-INF/web.xml @@ -47,6 +47,17 @@ /* + + PSSecurityHeadersFilter + com.percussion.security.servlet.PSSecurityHeadersFilter + + + + PSSecurityHeadersFilter + /* + + + Jersey Spring Web Application org.glassfish.jersey.servlet.ServletContainer diff --git a/deliverytiersuite/delivery-tier-suite/forms/src/main/java/webapp/WEB-INF/web.xml b/deliverytiersuite/delivery-tier-suite/forms/src/main/java/webapp/WEB-INF/web.xml index 5a9cd48697..7e5cc3d6cc 100644 --- a/deliverytiersuite/delivery-tier-suite/forms/src/main/java/webapp/WEB-INF/web.xml +++ b/deliverytiersuite/delivery-tier-suite/forms/src/main/java/webapp/WEB-INF/web.xml @@ -46,6 +46,17 @@ /* + + PSSecurityHeadersFilter + com.percussion.security.servlet.PSSecurityHeadersFilter + + + + PSSecurityHeadersFilter + /* + + + Jersey Spring Web Application org.glassfish.jersey.servlet.ServletContainer diff --git a/deliverytiersuite/delivery-tier-suite/integrations/src/main/java/webapp/WEB-INF/web.xml b/deliverytiersuite/delivery-tier-suite/integrations/src/main/java/webapp/WEB-INF/web.xml index 4db279acf5..9f76cd3679 100644 --- a/deliverytiersuite/delivery-tier-suite/integrations/src/main/java/webapp/WEB-INF/web.xml +++ b/deliverytiersuite/delivery-tier-suite/integrations/src/main/java/webapp/WEB-INF/web.xml @@ -46,6 +46,17 @@ /* + + PSSecurityHeadersFilter + com.percussion.security.servlet.PSSecurityHeadersFilter + + + + PSSecurityHeadersFilter + /* + + + Jersey Spring Web Application org.glassfish.jersey.servlet.ServletContainer diff --git a/deliverytiersuite/delivery-tier-suite/membership/src/main/java/webapp/WEB-INF/web.xml b/deliverytiersuite/delivery-tier-suite/membership/src/main/java/webapp/WEB-INF/web.xml index 70fb76b55f..5eefceface 100644 --- a/deliverytiersuite/delivery-tier-suite/membership/src/main/java/webapp/WEB-INF/web.xml +++ b/deliverytiersuite/delivery-tier-suite/membership/src/main/java/webapp/WEB-INF/web.xml @@ -44,6 +44,17 @@ /* + + PSSecurityHeadersFilter + com.percussion.security.servlet.PSSecurityHeadersFilter + + + + PSSecurityHeadersFilter + /* + + + Jersey Spring Web Application org.glassfish.jersey.servlet.ServletContainer diff --git a/deliverytiersuite/delivery-tier-suite/metadata/src/main/java/webapp/WEB-INF/web.xml b/deliverytiersuite/delivery-tier-suite/metadata/src/main/java/webapp/WEB-INF/web.xml index 5815f29b45..f73142470c 100644 --- a/deliverytiersuite/delivery-tier-suite/metadata/src/main/java/webapp/WEB-INF/web.xml +++ b/deliverytiersuite/delivery-tier-suite/metadata/src/main/java/webapp/WEB-INF/web.xml @@ -47,6 +47,17 @@ /* + + PSSecurityHeadersFilter + com.percussion.security.servlet.PSSecurityHeadersFilter + + + + PSSecurityHeadersFilter + /* + + + Jersey Spring Web Application org.glassfish.jersey.servlet.ServletContainer diff --git a/deliverytiersuite/delivery-tier-suite/polls/src/main/java/webapp/WEB-INF/web.xml b/deliverytiersuite/delivery-tier-suite/polls/src/main/java/webapp/WEB-INF/web.xml index d6030d5ab0..ec4c527f01 100644 --- a/deliverytiersuite/delivery-tier-suite/polls/src/main/java/webapp/WEB-INF/web.xml +++ b/deliverytiersuite/delivery-tier-suite/polls/src/main/java/webapp/WEB-INF/web.xml @@ -47,6 +47,17 @@ /* + + PSSecurityHeadersFilter + com.percussion.security.servlet.PSSecurityHeadersFilter + + + + PSSecurityHeadersFilter + /* + + + Jersey Spring Web Application org.glassfish.jersey.servlet.ServletContainer