允许在HTML框架内呈现网页

hai*_*zpt 14 spring-security x-frame-options clickjacking

我有两个Web应用程序:Web应用程序(Web应用程序)和报表Web.我想在web-app中嵌入报表web <iframe>.因此浏览器拒绝了错误:

X-Frame-Options:DENY

有帮助吗?

med*_*117 17

X-Frame-options的值可以是DENY(默认值),SAMEORIGIN和ALLOW-FROM uri.根据Spring Security文档,您可以告诉Spring覆盖以这种方式添加自定义标头的默认行为:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .headers()
            .addHeaderWriter(new XFrameOptionsHeaderWriter(new WhiteListedAllowFromStrategy(Arrays.asList("www.yourhostname.com"))))
    ...
}
Run Code Online (Sandbox Code Playgroud)

和Spring将附加X-Frame-Options:ALLOW-FROM ...或

 .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
Run Code Online (Sandbox Code Playgroud)

对于X-Frame-Options:SAMEORIGIN或完全禁用它

http.headers().frameOptions().disable()
Run Code Online (Sandbox Code Playgroud)


fla*_*nze 7

如果您使用的是Spring Security 4.x,则以下配置将解决您的问题(假设webapp在同一服务器地址上运行).

XML配置:

<http>
    <!-- ... -->

    <headers>
        <frame-options policy="SAMEORIGIN" />
    </headers>
</http>
Run Code Online (Sandbox Code Playgroud)

Java配置:

@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        // ...
        .headers().frameOptions().sameOrigin();
    }
}
Run Code Online (Sandbox Code Playgroud)

禁用配置

你也可以禁用它,意识到安全风险.

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


背景资料

在Spring Security 3.2.0中,引入了安全标头,但默认情况下已禁用:http:
//spring.io/blog/2013/08/23/spring-security-3-2-0-rc1-highlights-security-页眉/

在Spring Security 4.x中,默认情况下启用标头(对于IFrame:X-Frame-Options:DENY):"Spring Security 4.x已将Java配置和XML配置都更改为要求显式禁用默认值."
http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-jc.html#m3to4-header

来源:http://docs.spring.io/autorepo/docs/spring-security/4.0.x/reference/html/headers.html#headers-frame-options