내 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
.