Как отключить заголовок ответа "X-Frame-Options" в Spring Security?



у меня есть CKeditor на моем jsp и всякий раз, когда я загружаю что-то, появляется следующая ошибка:



 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, и все работает как шарм. Как я могу отключить это в файле spring security xml? Что я должен написать между <http> теги

995   6  

6 ответов:

по умолчанию X-Frame-Options запрещен, чтобы не допустить clickjacking атаки. Чтобы переопределить это, вы можете добавить следующее в свой spring security config

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

вот доступные варианты политики

  • запретить - это значение по умолчанию. При этом страница не может быть отображена во фрейме, независимо от того, сайт пытается это сделать.
  • SAMEORIGIN - я предполагаю, что это то, что вы ищете для того, чтобы страница была (и может быть) отображена в рамке на том же источнике, что и сама страница
  • РАЗРЕШИТЬ-ОТ - позволяет указать источник, в котором страница может отображаться в рамке.

для получения дополнительной информации посмотрите здесь.

и здесь чтобы проверить, как вы можете настроить заголовки с помощью XML или Java configs.

обратите внимание, что вам также может потребоваться указать уместно strategy, исходя из потребностей.

Если вы используете Java configs вместо XML configs, поместите это в свой " WebSecurityConfigurerAdapter.настройка (HttpSecurity http) " метод:

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

скорее всего вы не хотите полностью отключить этот заголовок, но использовать SAMEORIGIN. Если вы используете Java Configs (Spring Boot) и хотел бы разрешить X-Frame-Options:SAMEORIGIN, тогда вам нужно будет использовать следующее.


для более старых версий безопасности Spring:

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

Если вы используете конфигурацию Java Spring Security, все заголовки безопасности по умолчанию добавляются по умолчанию. Они могут быть отключены с помощью конфигурации Java ниже:

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
   WebSecurityConfigurerAdapter {

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http
      .headers().disable()
      ...;
  }
}

Comments

    Ничего не найдено.