web-dev-qa-db-ja.com

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を削除しようとしましたが、すべてが魅力のように機能します。 Spring Security XMLファイルでこれを無効にするにはどうすればよいですか? <http>タグの間に何を書くべきですか

69
Bravo

clickjacking 攻撃を防ぐために、デフォルトではX-Frame-Optionsは拒否に設定されます。これをオーバーライドするには、次をスプリングセキュリティ設定に追加します。

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

ポリシーの利用可能なオプションは次のとおりです

  • DENY-はデフォルト値です。これにより、サイトがフレームを表示しようとしているかどうかに関係なく、ページをフレームに表示できません。
  • SAMEORIGIN-これはあなたが探しているものだと思いますので、ページは同じ上のフレームに表示されますページ自体としての起源
  • ALLOW-FROM-ページをフレームに表示できるオリジンを指定できます。

詳細については、 here をご覧ください。

here XMLまたはJava configsを使用してヘッダーを構成する方法を確認します。

必要に応じて、適切なstrategyも指定する必要がある場合があることに注意してください。

94
vtor

XML構成ではなくJava構成を使用している場合、これを「WebSecurityConfigurerAdapter.configure(HttpSecurity http)」メソッドに追加します。

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

ほとんどの場合、このヘッダーを完全に無効にしたくないが、SAMEORIGINを使用します。 Java構成(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();
45
kamwo

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>
15
Matthew Kirkley

Spring Bootを使用している場合、Spring Securityのデフォルトヘッダーを無効にする最も簡単な方法は、security.headers.*プロパティを使用することです。特に、X-Frame-Optionsデフォルトヘッダーを無効にする場合は、次のコードをapplication.propertiesに追加するだけです。

security.headers.frame=false

使用できるsecurity.headers.cachesecurity.headers.content-typesecurity.headers.hsts、およびsecurity.headers.xssのプロパティもあります。詳細については、 SecurityProperties をご覧ください。

9
Ali Dehghani

Spring SecurityのJava構成を使用している場合、デフォルトですべてのデフォルトのセキュリティヘッダーが追加されます。以下のJava構成を使用して無効にすることができます。

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
   WebSecurityConfigurerAdapter {

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