Spring Security XSS 방지1 - eunja511005/Tutorial GitHub Wiki

1. X-XSS-Protection: 1; mode=block

Spring Security에서 자동으로 추가해주므로 따로 수정 필요 없음

2. Content-Sercurity-Policy: script-src 'self'

아래와 같이 설정을 추가해 주면 Response 헤더에 추가 됨
크롬, 엣지, 사파리, 파리어폭스에서 해당 헤더 지원함

@Configuration
public class SecurityConf {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.headers()
            .xssProtection()
            .and()
            .contentSecurityPolicy("script-src 'self'");
        return http.build();
    }
}

3. 입력값 유효성 체크

public class Book { 
  @Min(1)
  @Id
  private long id;

  @Size(min=3, max=50)
  private String name;

  @Size(min=3, max=50)
  @Pattern(message="Type can contain alphanumeric characters only", regexp = "[a-zA-Z0-9 ]+")
  private String type;
}