首页 > 解决方案 > 如何设置 script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline' ; 播放框架 2.6.x 中的特定页面或路径?

问题描述

我一直在尝试在我的网络应用程序中设置一个文本编辑器。在哪里访问文本编辑器我必须允许 script-src 'self' 'unsafe-inline' 'unsafe-eval' 和 style-src 'unsafe-inline'。但是在 playframework 2.6.xi 中必须通过 play.filters.headers.contentSecurityPolicy在配置文件中进行设置,这使得整个应用程序不安全。

注意:元标记不起作用,即使我尝试通过过滤器在响应标头中传递 Content-security-policy。没有任何效果。

在这种情况下,是否有任何方法可以设置script-src 'self' 'unsafe-inline' 'unsafe-eval' and style-src 'unsafe-inline'play 2.6.x 中的任何特定页面或路径?

标签: javascalaplayframeworkplayframework-2.3

解决方案


这是剪影种子模板的一个例子

# Security Filter Configuration - Content Security Policy
play.filters.headers {
  contentSecurityPolicy = "default-src 'self';"
  contentSecurityPolicy = ${play.filters.headers.contentSecurityPolicy}" img-src 'self' *.fbcdn.net *.twimg.com *.googleusercontent.com *.xingassets.com vk.com *.yimg.com secure.gravatar.com;"
  contentSecurityPolicy = ${play.filters.headers.contentSecurityPolicy}" style-src 'self' 'unsafe-inline' cdnjs.cloudflare.com maxcdn.bootstrapcdn.com cdn.jsdelivr.net fonts.googleapis.com;"
  contentSecurityPolicy = ${play.filters.headers.contentSecurityPolicy}" font-src 'self' fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com;"
  contentSecurityPolicy = ${play.filters.headers.contentSecurityPolicy}" script-src 'self' cdnjs.cloudflare.com;"
  contentSecurityPolicy = ${play.filters.headers.contentSecurityPolicy}" connect-src 'self' twitter.com *.xing.com;"
}

播放 2.7 在某个动作上它看起来像:

Ok("Index").withHeaders(SecurityHeadersFilter.REFERRER_POLICY -> "my page-specific header")

检查文档:https ://www.playframework.com/documentation/2.7.x/SecurityHeaders#Action-specific-overrides

但是在Play 2.7中已弃用 - 请改用 CSP - 请参阅:https ://www.playframework.com/documentation/2.7.x/CspFilter#Enabling-CSP-on-Specific-Actions

也有可能(在同一个文档上)route从 CSP 过滤器中排除 a,例如:

+ nocsp
POST     /report-to                 controllers.CSPReportController.report

推荐阅读