[java] 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>태그 사이에 무엇을 써야합니까



답변

클릭 재킹 공격 X-Frame-Options을 방지하기 위해 기본적 으로 거부 됨으로 설정됩니다 . 이를 재정의하려면 스프링 보안 구성에 다음을 추가 할 수 있습니다.

<http>
    <headers>
        <frame-options policy="SAMEORIGIN"/>
    </headers>
</http>

정책에 사용할 수있는 옵션은 다음과 같습니다.

  • DENY- 기본값입니다. 이렇게하면 사이트에 관계없이 페이지를 프레임에 표시 할 수 없습니다.
  • SAMEORIGIN- 나는 이것이 당신이 찾고있는 것이라고 가정하여 페이지가 페이지 자체와 동일한 출처의 프레임에 표시되고 표시 될 수 있습니다.
  • ALLOW-FROM- 페이지가 프레임에 표시 될 수있는 출처를 지정할 수 있습니다.

자세한 내용은 여기 를 참조 하십시오 .

그리고 XML 또는 Java 구성을 사용하여 헤더를 구성하는 방법을 확인 하십시오 .

필요 strategy에 따라 적절한을 지정해야 할 수도 있습니다 .


답변

XML 구성 대신 Java 구성을 사용하는 경우 다음을 WebSecurityConfigurerAdapter.configure(HttpSecurity http)메소드에 넣으십시오 .

http.headers().frameOptions().disable();


답변

이 헤더를 완전히 비활성화하고 싶지는 않지만 SAMEORIGIN. Java Configs ( 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()
      ...;
  }
}


답변

Spring Boot를 사용하는 경우 Spring Security 기본 헤더를 비활성화하는 가장 간단한 방법은 security.headers.*속성 을 사용하는 것 입니다. 특히 X-Frame-Options기본 헤더 를 비활성화 하려면 다음을 추가하십시오 application.properties.

security.headers.frame=false

이 또한 security.headers.cache, security.headers.content-type, security.headers.hsts그리고 security.headers.xss당신이 사용할 수있는 속성. 자세한 내용은를 참조하십시오 SecurityProperties.


답변