Spring Security에서 'X-Frame-Options' 응답 헤더를 비활성화하려면 어떻게 해야 합니까?
JSP에 CKeditor가 있는데 업로드 할 때마다 다음 오류가 나타납니다.
Refused to display 'http://localhost:8080/xxx/xxx/upload-image?CKEditor=text&CKEditorFuncNum=1&langCode=ru' in a frame because it set 'X-Frame-Options' to 'DENY'.
스프링 시큐리티를 제거하려고 했는데 모든 게 잘 작동하더군요.spring security xml 파일에서 이를 비활성화하려면 어떻게 해야 합니까?이 사이에 뭐라고 써야 할까요?<http>
태그
XML 구성 대신 Java 구성을 사용하는 경우,WebSecurityConfigurerAdapter.configure(HttpSecurity http)
방법:
http.headers().frameOptions().disable();
디폴트X-Frame-Options
를 거부로 설정하여 클릭잭킹 공격을 방지합니다.이를 덮어쓰려면 스프링 보안 구성에 다음을 추가합니다.
<http>
<headers>
<frame-options policy="SAMEORIGIN"/>
</headers>
</http>
정책에 사용할 수 있는 옵션은 다음과 같습니다.
- DENY - 기본값입니다.이렇게 하면 페이지를 프레임에 표시할 수 없습니다.사이트에 관계없이 표시할 수 없습니다.
- SAME ORIGIN - 이것이 당신이 찾고 있는 것이라고 생각합니다.그러면, 페이지는, 페이지 자체와 같은 발신기지 프레임에 표시됩니다(또, 표시할 수 있습니다).
- ALLOW-FROM - 페이지를 프레임에 표시할 수 있는 원점을 지정할 수 있습니다.
자세한 것은, 여기를 봐 주세요.
여기서 XML 또는 Java Configuration을 사용하여 헤더를 설정하는 방법을 확인합니다.
주의: 적절한 지정이 필요할 수 있습니다.strategy
니즈를 기반으로 합니다.
대부분의 경우 이 헤더를 완전히 비활성화하고 싶지 않지만SAMEORIGIN
Java Configurations 를 사용하고 있는 경우(Spring Boot
) 및 X-Frame-Options를 허용합니다.SAMEORIGIN
, 다음의 것을 사용할 필요가 있습니다.
오래된 Spring Security 버전의 경우:
http
.headers()
.addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
Spring Security 4.0.2와 같은 새로운 버전의 경우:
http
.headers()
.frameOptions()
.sameOrigin();
XML 구성을 사용하는 경우
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security">
<security:http>
<security:headers>
<security:frame-options disabled="true"></security:frame-options>
</security:headers>
</security:http>
</beans>
Spring Security의 Java 구성을 사용하는 경우 기본적으로 모든 기본 보안 헤더가 추가됩니다.다음의 Java 설정을 사용해 디세블로 할 수 있습니다.
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.headers().disable()
...;
}
}
스프링 부트를 사용하는 경우 스프링 보안 기본 헤더를 비활성화하는 가장 간단한 방법은security.headers.*
특성.특히 디세블로 하는 경우X-Frame-Options
디폴트 헤더에 다음 명령어를 추가합니다.application.properties
:
security.headers.frame=false
또 있다security.headers.cache
,security.headers.content-type
,security.headers.hsts
그리고.security.headers.xss
사용할 수 있는 속성.상세한 것에 대하여는, 을 참조해 주세요.
여러 Http Security 인스턴스를 설정해야 합니다.
이것은 X-Frame-Options 헤더가 없는 /public/** 요청만 있는 코드입니다.
@Configuration
public class SecurityConfig {
/**
* Public part - Embeddable Web Plugin
*/
@Configuration
@Order(1)
public static class EmbeddableWebPluginSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
// Disable X-Frame-Option Header
http.antMatcher("/public/**").headers().frameOptions().disable();
}
}
/**
* Private part - Web App Paths
*/
@Configuration
@EnableOAuth2Sso
public static class SSOWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.antMatcher("/**")
.authorizeRequests()
.antMatchers("/public/**", "/", "/login**", "/webjars/**", "/error**", "/static/**", "/robots", "/robot", "/robot.txt", "/robots.txt")
.permitAll()
.anyRequest()
.authenticated()
.and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/bye");
}
/**
* Public API endpoints
*/
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/api/**");
}
}
}
언급URL : https://stackoverflow.com/questions/28647136/how-to-disable-x-frame-options-response-header-in-spring-security
'source' 카테고리의 다른 글
python으로 "어제" 날짜 형식 지정 (0) | 2022.12.24 |
---|---|
오류 "root composer.json에 php ^7.3이 필요하지만 사용 중인 php 버전(8.0.0)이 해당 요구 사항을 충족하지 못합니다." (0) | 2022.12.24 |
isset()와 !empty()를 모두 체크하는 이유 (0) | 2022.12.24 |
Mac에 설치된 모든 Java 버전 보기 (0) | 2022.12.24 |
모든 mysql 테이블을 자동으로 별도의 파일로 덤프하시겠습니까? (0) | 2022.12.24 |