Skip to content

Commit 6648cde

Browse files
committed
feat: csp headers
1 parent 5ff7b8a commit 6648cde

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

arc-web/src/main/java/fr/insee/arc/web/WebSecurityConfiguration.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
1212
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
1313
import org.springframework.security.web.SecurityFilterChain;
14+
import org.springframework.security.web.header.writers.XXssProtectionHeaderWriter;
1415

1516
import fr.insee.arc.core.util.StaticLoggerDispatcher;
1617
import fr.insee.arc.utils.ressourceUtils.PropertiesHandler;
@@ -42,7 +43,14 @@ public ClientRegistrationRepository clientRegistrationRepository(PropertiesHandl
4243

4344
@Bean
4445
SecurityFilterChain clientSecurityFilterChain(HttpSecurity http, PropertiesHandler properties) throws Exception {
45-
46+
47+
http.headers(
48+
headers -> headers
49+
.xssProtection(xXssConfig -> xXssConfig.headerValue(XXssProtectionHeaderWriter.HeaderValue.ENABLED))
50+
.contentSecurityPolicy(
51+
csp ->
52+
csp.policyDirectives("img-src 'self' data:; style-src-elem 'self' data:; script-src-elem 'self' data:; style-src 'unsafe-inline'; default-src 'self'; script-src 'unsafe-inline'; form-action 'self'; object-src 'none';")));
53+
4654
// oath2 keycloak
4755
if (WebAttributesName.isKeycloakActive(properties.getKeycloakRealm())) {
4856

arc-web/src/main/webapp/js/gererPilotageBAS.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,8 @@ var configJS = "Render:FixedHeader;"
77
+ "Render:AlertBox;";
88

99
function alimenterPhase(t){
10-
console.log("savePhaseChoice :"+$("#savePhaseChoice").attr("value"));
11-
console.log("$(t) :"+$(t).attr("value"));
1210
$("#savePhaseChoice").attr("value",$(t).attr("value"));
1311
$("#savePhaseChoice").attr("m","js");
14-
console.log("savePhaseChoice :"+$("#savePhaseChoice").attr("value"));
15-
console.log("savePhaseChoice :"+$("#savePhaseChoice").attr("m"));
16-
1712
return true;
1813
}
1914

arc-ws/src/main/java/fr/insee/arc/ws/services/restServices/WsSecurityConfiguration.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.springframework.security.oauth2.jwt.JwtDecoders;
2121
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
2222
import org.springframework.security.web.SecurityFilterChain;
23+
import org.springframework.security.web.header.writers.XXssProtectionHeaderWriter;
2324
import org.springframework.security.web.servlet.util.matcher.PathPatternRequestMatcher;
2425

2526
import fr.insee.arc.core.util.StaticLoggerDispatcher;
@@ -50,6 +51,18 @@ public JwtAuthenticationConverter jwtAuthenticationConverterForKeycloak() {
5051
@Bean
5152
SecurityFilterChain securityFilterChain(HttpSecurity http, PropertiesHandler properties) throws Exception {
5253

54+
http.headers(
55+
headers -> headers
56+
.xssProtection(xXssConfig -> xXssConfig.headerValue(XXssProtectionHeaderWriter.HeaderValue.ENABLED_MODE_BLOCK))
57+
.httpStrictTransportSecurity(hsts -> hsts
58+
.includeSubDomains(true)
59+
.preload(true)
60+
.maxAgeInSeconds(31536000)
61+
)
62+
.contentSecurityPolicy(
63+
csp ->
64+
csp.policyDirectives("style-src 'none'; default-src 'none'; script-src 'none'; form-action 'none'; object-src 'none';")));
65+
5366

5467
if (WebAttributesName.isKeycloakActive(properties.getKeycloakRealm())) {
5568
http.oauth2ResourceServer(resourceServer -> resourceServer.jwt(jwtResourceServer -> jwtResourceServer

0 commit comments

Comments
 (0)