Eu tenho o CKeditor em meu jsp e sempre que faço upload de algo, o seguinte erro aparece:
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'.
Tentei remover o Spring Security e tudo funciona perfeitamente. Como posso desativar isso no arquivo xml do Spring Security? O que devo escrever entre as <http>
tags
Respostas:
Por padrão,
X-Frame-Options
é definido como negado, para evitar ataques de clickjacking . Para substituir isso, você pode adicionar o seguinte em sua configuração de segurança do Spring<http> <headers> <frame-options policy="SAMEORIGIN"/> </headers> </http>
Aqui estão as opções disponíveis para política
Para mais informações, dê uma olhada aqui .
E aqui para verificar como você pode configurar os cabeçalhos usando configurações XML ou Java.
Observe que você também pode precisar especificar apropriado
strategy
, com base nas necessidades.fonte
http
eheaders
tags?http.headers().frameOptions().sameOrigin();
Se você estiver usando configurações Java em vez de configurações XML, coloque isso em seu
WebSecurityConfigurerAdapter.configure(HttpSecurity http)
método:fonte
http.headers().frameOptions().sameOrigin();
Provavelmente você não deseja desativar este cabeçalho completamente, mas use
SAMEORIGIN
. Se você estiver usando Java Configs (Spring Boot
) e quiser permitir X-Frame-OptionsSAMEORIGIN
:, será necessário usar o seguinte.Para versões anteriores do Spring Security:
http .headers() .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
Para versões mais recentes como Spring Security 4.0.2 :
fonte
Se estiver usando a configuração XML, você pode usar
<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>
fonte
Se você estiver usando a configuração Java do Spring Security, todos os cabeçalhos de segurança padrão são adicionados por padrão. Eles podem ser desativados usando a configuração Java abaixo:
@EnableWebSecurity @Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .headers().disable() ...; } }
fonte
Se você estiver usando Spring Boot, a maneira mais simples de desabilitar os cabeçalhos padrão do Spring Security é usar as
security.headers.*
propriedades. Em particular, se você deseja desativar oX-Frame-Options
cabeçalho padrão, basta adicionar o seguinte ao seuapplication.properties
:security.headers.frame=false
Há também
security.headers.cache
,security.headers.content-type
,security.headers.hsts
esecurity.headers.xss
propriedades que você pode usar. Para obter mais informações, dê uma olhada emSecurityProperties
.fonte