Spring Securityで「X-Frame-Options」応答ヘッダーを無効にする方法は?


89

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>タグの間に何を書くべきですか


1
以下の回答のいずれも、コントローラーメソッドレベルでSAMEORIGINまたはALLOWを適用できるかどうかについてはまだ説明していません-誰か知っていますか?
ブラック

回答:


111

クリックジャッキング攻撃X-Frame-Optionsを防ぐために、デフォルトでは拒否に設定されています。これをオーバーライドするには、Springセキュリティ構成に以下を追加します

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

ポリシーに利用できるオプションは次のとおりです

  • DENY-はデフォルト値です。これにより、サイトが表示しようとしても、ページをフレームに表示することはできません。
  • SAMEORIGIN-これがあなたが探しているものだと思います。そのため、ページはページ自体と同じ原点のフレームに表示されます(そして表示できます)。
  • ALLOW-FROM-ページをフレームに表示できる原点を指定できます。

詳細については、こちらをご覧ください

そして、ここでは、XMLまたはJava構成を使用してヘッダーを構成する方法を確認します。

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


これhttpheadersタグの名前空間は何ですか?
Pasupathi Rajamanickam 2015

4
これをコントローラーメソッドレベルとして適用することは可能ですか?
mad_fox 2017年

3
あなたはWebSecurityConfigurerAdapterのconfigureメソッド内でそれを設定する必要がある場合は、次のコードを記述しますhttp.headers().frameOptions().sameOrigin();
russellhoff

@vtor私はSpring3.1を使用していますが、これはサポートされていません。回避策を提案してください。

@ Springdocs.spring.io / spring - security / site / docs / current / reference / html / サポートされています。試したこととうまくいかなかったことを教えてください。
vtor 2017

102

XML構成の代わりにJava構成を使用している場合は、これをWebSecurityConfigurerAdapter.configure(HttpSecurity http)メソッドに入れます。

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

34
disable()の使用はオプションですが、同じサーバー上にある場合は、次を使用してくださいhttp.headers().frameOptions().sameOrigin();
Ian Newland 2016年

59

ほとんどの場合、このヘッダーを完全に非アクティブ化する必要はありませんが、を使用してくださいSAMEORIGIN。Java Configs(Spring Boot)を使用していて、X-Frame-Options:を許可しSAMEORIGINたい場合は、以下を使用する必要があります。


古いSpringSecurityバージョンの場合:

http
   .headers()
       .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))

Spring Security 4.0.2などの新しいバージョンの場合:

http
   .headers()
      .frameOptions()
         .sameOrigin();

Spring 3.2.12でこれを設定するにはどうすればよいですか?
Pasupathi Rajamanickam 2015

1
3.Xから4.Xに移行し、最初の例に基づいて追加しただけなので、これに遭遇しました。どうも。
スティーブ

18

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>

11

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

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
   WebSecurityConfigurerAdapter {

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

9

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


5
Spring Boot 2.xでは、このメソッドは非推奨です。「セキュリティの自動構成はカスタマイズできなくなりました。代わりに、独自のWebSecurityConfigurerBeanを提供してください。」
mrkernelpanic 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.