2016-04-21 11 views
0

Ich habe eine Webapp (myApp - entwickelt mit SpringBoot und VAADIN). Die Webanwendung wird auf dem Tomcats-Server http://tomcatserver:8080/myApp bereitgestellt.Content-Security-Policy für Webapp in iFrame

Jetzt möchte ich die Webapp in einem zeigen.

Eine Anforderung ist jetzt, dass IFRAME nur für eine Whitelist von Domänen funktionieren soll, die das IFRAME implementieren. So habe ich einen Webserver http://myWebserver:8081, der eine index.html innerhalb der IFRAME hat.

Die Webapp erzeugt die folgende im WebSecurityConfigureAdapter des Frühlings:

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;" 
         ) 
       ); 

Aber ich bekomme immer

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. 

Und das gleiche für 'Skript-src'.

Ich weiß nicht zu 100%, aber wenn ich hinzufügen 'unsafe-inline' zu Skript-src und Stil-src die IFRAME ist für jede Domäne geöffnet.

Was mache ich falsch? Ist das überhaupt möglich?

Antwort

0

Um eine erfolgreiche Lösung erhalte ich ersetzt:

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;" 
         ) 

mit

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