Mam CKeditor na swoim jsp i za każdym razem, gdy coś przesyłam, wyskakuje następujący błąd:
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'.
Próbowałem usunąć Spring Security i wszystko działa jak urok. Jak mogę to wyłączyć w wiosennym pliku XML bezpieczeństwa? Co mam napisać między <http>
tagami
Odpowiedzi:
Domyślnie
X-Frame-Options
jest to zabronione, aby zapobiec atakom typu clickjacking . Aby to zmienić, możesz dodać następujące elementy do konfiguracji zabezpieczeń Spring<http> <headers> <frame-options policy="SAMEORIGIN"/> </headers> </http>
Oto dostępne opcje polityki
Więcej informacji znajdziesz tutaj .
A tutaj, aby sprawdzić, jak możesz skonfigurować nagłówki za pomocą konfiguracji XML lub Java.
Pamiętaj, że może być konieczne określenie odpowiedniego
strategy
, w zależności od potrzeb.źródło
http
iheaders
tagów?http.headers().frameOptions().sameOrigin();
Jeśli używasz konfiguracji Java zamiast konfiguracji XML, umieść to w swojej
WebSecurityConfigurerAdapter.configure(HttpSecurity http)
metodzie:źródło
http.headers().frameOptions().sameOrigin();
Najprawdopodobniej nie chcesz całkowicie dezaktywować tego nagłówka, ale użyj
SAMEORIGIN
. Jeśli korzystasz z Java Configs (Spring Boot
) i chcesz zezwolić na X-Frame-Options :,SAMEORIGIN
musisz użyć poniższego.W przypadku starszych wersji Spring Security:
http .headers() .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
W przypadku nowszych wersji, takich jak Spring Security 4.0.2 :
źródło
Jeśli używasz konfiguracji XML, możesz użyć
<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>
źródło
Jeśli używasz konfiguracji Java Spring Security, wszystkie domyślne nagłówki zabezpieczeń są dodawane domyślnie. Można je wyłączyć za pomocą poniższej konfiguracji Java:
@EnableWebSecurity @Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .headers().disable() ...; } }
źródło
Jeśli używasz Spring Boot, najprostszym sposobem wyłączenia domyślnych nagłówków Spring Security jest użycie
security.headers.*
właściwości. W szczególności, jeśli chcesz wyłączyćX-Frame-Options
domyślny nagłówek, po prostu dodaj następujące informacje doapplication.properties
:security.headers.frame=false
Jest też
security.headers.cache
,security.headers.content-type
,security.headers.hsts
isecurity.headers.xss
właściwości, które można wykorzystać. Aby uzyskać więcej informacji, zobaczSecurityProperties
.źródło