Skip to content

Commit 16f4652

Browse files
ATLAS-5160: Remove deprecated X-XSS-PROTECTION header from HTTP response headers initialization and Atlas Spring Security Config
1 parent 60e6d8c commit 16f4652

4 files changed

Lines changed: 8 additions & 5 deletions

File tree

webapp/src/main/java/org/apache/atlas/web/filters/HeadersUtil.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,10 @@ public class HeadersUtil {
3535

3636
public static final String X_FRAME_OPTIONS_KEY = "X-Frame-Options";
3737
public static final String X_CONTENT_TYPE_OPTIONS_KEY = "X-Content-Type-Options";
38-
public static final String X_XSS_PROTECTION_KEY = "X-XSS-Protection";
3938
public static final String STRICT_TRANSPORT_SEC_KEY = "Strict-Transport-Security";
4039
public static final String CONTENT_SEC_POLICY_KEY = "Content-Security-Policy";
4140
public static final String X_FRAME_OPTIONS_VAL = "DENY";
4241
public static final String X_CONTENT_TYPE_OPTIONS_VAL = "nosniff";
43-
public static final String X_XSS_PROTECTION_VAL = "1; mode=block";
4442
public static final String STRICT_TRANSPORT_SEC_VAL = "max-age=31536000; includeSubDomains";
4543
public static final String CONTENT_SEC_POLICY_VAL = "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: data:; connect-src 'self'; img-src 'self' blob: data:; style-src 'self' 'unsafe-inline';font-src 'self' data:";
4644
public static final String SERVER_KEY = "Server";
@@ -79,7 +77,6 @@ public static void initializeHttpResponseHeaders(Properties configuredHeaders) {
7977

8078
HEADER_MAP.put(X_FRAME_OPTIONS_KEY, X_FRAME_OPTIONS_VAL);
8179
HEADER_MAP.put(X_CONTENT_TYPE_OPTIONS_KEY, X_CONTENT_TYPE_OPTIONS_VAL);
82-
HEADER_MAP.put(X_XSS_PROTECTION_KEY, X_XSS_PROTECTION_VAL);
8380
HEADER_MAP.put(STRICT_TRANSPORT_SEC_KEY, STRICT_TRANSPORT_SEC_VAL);
8481
HEADER_MAP.put(CONTENT_SEC_POLICY_KEY, CONTENT_SEC_POLICY_VAL);
8582
HEADER_MAP.put(SERVER_KEY, AtlasConfiguration.HTTP_HEADER_SERVER_VALUE.getString());

webapp/src/main/java/org/apache/atlas/web/security/AtlasSecurityConfig.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,8 @@ protected void configure(HttpSecurity httpSecurity) throws Exception {
195195
//@formatter:off
196196
httpSecurity.authorizeRequests().anyRequest().authenticated()
197197
.and()
198-
.headers()
198+
// Why disable() xssProtection -> By default Spring Security automatically adds security headers unless you disable them. No Modern Browsers support and its replaced by "Content-Security-Policy"
199+
.headers().xssProtection().disable()
199200
.addHeaderWriter(new StaticHeadersWriter(HeadersUtil.CONTENT_SEC_POLICY_KEY, HeadersUtil.getHeaderMap(HeadersUtil.CONTENT_SEC_POLICY_KEY)))
200201
.addHeaderWriter(new StaticHeadersWriter(SERVER_KEY, HeadersUtil.getHeaderMap(SERVER_KEY)))
201202
.and()

webapp/src/test/java/org/apache/atlas/web/filters/HeaderUtilsTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ public void testDefaultHeadersArePresent() {
9393

9494
assertEquals("DENY", HeadersUtil.getHeaderMap(HeadersUtil.X_FRAME_OPTIONS_KEY));
9595
assertEquals("nosniff", HeadersUtil.getHeaderMap(HeadersUtil.X_CONTENT_TYPE_OPTIONS_KEY));
96-
assertEquals("1; mode=block", HeadersUtil.getHeaderMap(HeadersUtil.X_XSS_PROTECTION_KEY));
9796
}
9897

9998
private Properties createPropertiesWithHeaders(String... headers) {

webapp/src/test/java/org/apache/atlas/web/security/AtlasSecurityConfigTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,7 @@ private void setupHttpSecurityMocksFor(HttpSecurity httpSecurity) throws Excepti
499499
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry mockAuthRequests = mock(ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry.class);
500500
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.AuthorizedUrl mockAuthorizedUrl = mock(ExpressionUrlAuthorizationConfigurer.AuthorizedUrl.class);
501501
HeadersConfigurer<HttpSecurity> mockHeadersConfigurer = mock(HeadersConfigurer.class);
502+
HeadersConfigurer<HttpSecurity>.XXssConfig mockXssConfigurer = mock(HeadersConfigurer.XXssConfig.class);
502503
ServletApiConfigurer<HttpSecurity> mockServletApiConfigurer = mock(ServletApiConfigurer.class);
503504
CsrfConfigurer<HttpSecurity> mockCsrfConfigurer = mock(CsrfConfigurer.class);
504505
SessionManagementConfigurer<HttpSecurity> mockSessionConfigurer = mock(SessionManagementConfigurer.class);
@@ -514,6 +515,8 @@ private void setupHttpSecurityMocksFor(HttpSecurity httpSecurity) throws Excepti
514515
when(mockAuthRequests.and()).thenReturn(httpSecurity);
515516

516517
when(httpSecurity.headers()).thenReturn(mockHeadersConfigurer);
518+
when(mockHeadersConfigurer.xssProtection()).thenReturn(mockXssConfigurer);
519+
when(mockXssConfigurer.disable()).thenReturn(mockHeadersConfigurer);
517520
when(mockHeadersConfigurer.addHeaderWriter(any(StaticHeadersWriter.class))).thenReturn(mockHeadersConfigurer);
518521
when(mockHeadersConfigurer.and()).thenReturn(httpSecurity);
519522

@@ -857,6 +860,7 @@ private void setupHttpSecurityMocks() throws Exception {
857860
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry mockAuthRequests = mock(ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry.class);
858861
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.AuthorizedUrl mockAuthorizedUrl = mock(ExpressionUrlAuthorizationConfigurer.AuthorizedUrl.class);
859862
HeadersConfigurer<HttpSecurity> mockHeadersConfigurer = mock(HeadersConfigurer.class);
863+
HeadersConfigurer<HttpSecurity>.XXssConfig mockXssConfigurer = mock(HeadersConfigurer.XXssConfig.class);
860864
ServletApiConfigurer<HttpSecurity> mockServletApiConfigurer = mock(ServletApiConfigurer.class);
861865
CsrfConfigurer<HttpSecurity> mockCsrfConfigurer = mock(CsrfConfigurer.class);
862866
SessionManagementConfigurer<HttpSecurity> mockSessionConfigurer = mock(SessionManagementConfigurer.class);
@@ -872,6 +876,8 @@ private void setupHttpSecurityMocks() throws Exception {
872876
when(mockAuthRequests.and()).thenReturn(mockHttpSecurity);
873877

874878
when(mockHttpSecurity.headers()).thenReturn(mockHeadersConfigurer);
879+
when(mockHeadersConfigurer.xssProtection()).thenReturn(mockXssConfigurer);
880+
when(mockXssConfigurer.disable()).thenReturn(mockHeadersConfigurer);
875881
when(mockHeadersConfigurer.addHeaderWriter(any(StaticHeadersWriter.class))).thenReturn(mockHeadersConfigurer);
876882
when(mockHeadersConfigurer.and()).thenReturn(mockHttpSecurity);
877883

0 commit comments

Comments
 (0)