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>
タグの間に何を書くべきですか
clickjacking 攻撃を防ぐために、デフォルトではX-Frame-Options
は拒否に設定されます。これをオーバーライドするには、次をスプリングセキュリティ設定に追加します。
<http>
<headers>
<frame-options policy="SAMEORIGIN"/>
</headers>
</http>
ポリシーの利用可能なオプションは次のとおりです
詳細については、 here をご覧ください。
here XMLまたはJava configsを使用してヘッダーを構成する方法を確認します。
必要に応じて、適切なstrategy
も指定する必要がある場合があることに注意してください。
XML構成ではなくJava構成を使用している場合、これを「WebSecurityConfigurerAdapter.configure(HttpSecurity http)」メソッドに追加します。
http.headers().frameOptions().disable();
ほとんどの場合、このヘッダーを完全に無効にしたくないが、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();
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
をご覧ください。
Spring SecurityのJava構成を使用している場合、デフォルトですべてのデフォルトのセキュリティヘッダーが追加されます。以下のJava構成を使用して無効にすることができます。
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.headers().disable()
...;
}
}