iFrame中webapp的内容安全策略

时间:2016-04-21 09:17:29

标签: javascript html spring iframe content-security-policy

我有一个webapp(myApp - 用springBoot和VAADIN开发)。 该webapp将部署在tomcats服务器http://tomcatserver:8080/myApp上。

现在我想在一个。

中显示webapp

现在有一个要求,即IFRAME只适用于实现IFRAME的域的白名单。 所以我有一个网络服务器http://myWebserver:8081,它在IFRAME中有一个index.html。

webapp在Spring的WebSecurityConfigureAdapter中生成以下内容:

http.csrf().disable();  // Requirement: DTEUTARIF-111

http.headers()
        .frameOptions().disable()
        .and()
        .headers().contentTypeOptions()
        .and()
        .xssProtection()
        .and()
        .httpStrictTransportSecurity()
        .and()
        .addHeaderWriter(
                new StaticHeadersWriter(
                        "Content-Security-Policy",
                        "default-src 'self';" + 
                            "child-src 'self' http://myWebserver:8081;" +
                            "script-src 'self' http://myWebserver:8081;" +
                            "style-src 'self' http://myWebserver:8081;" +
                            "connect-src 'self' http://myWebserver:8081;" +
                            "font-src 'self' http://myWebserver:8081;" +
                            "object-src 'self' http://myWebserver:8081;"
                        )
                );

但我总是

angular.js:3543 Refused to apply inline style because it violates the following Content Security Policy directive: "style-src 'self' http://myWebserver:8081". Either the 'unsafe-inline' keyword, a hash ('sha256-1PxuDsPyGK6n+LZsMv0gG4lMX3i3XigG6h0CzPIjwrE='), or a nonce ('nonce-...') is required to enable inline execution.

同样适用于' script-src'。

我不知道100%,但当我将'unsafe-inline'添加到 script-src 样式时 - src IFRAME对每个域都开放。

我错了什么?反正有可能吗?

1 个答案:

答案 0 :(得分:0)

为了获得成功的解决方案,我更换了:

new StaticHeadersWriter(
                        "Content-Security-Policy",
                        "default-src 'self';" + 
                            "child-src 'self' http://myWebserver:8081;" +
                            "script-src 'self' http://myWebserver:8081;" +
                            "style-src 'self' http://myWebserver:8081;" +
                            "connect-src 'self' http://myWebserver:8081;" +
                            "font-src 'self' http://myWebserver:8081;" +
                            "object-src 'self' http://myWebserver:8081;"
                        )

new StaticHeadersWriter("Content-Security-Policy",
                        "frame-ancestors 'self' http://myWebserver:8081")