Skip to content

Commit 188aeca

Browse files
Use the new CSP configuration (#249)
1 parent 2fad61b commit 188aeca

File tree

6 files changed

+42
-24
lines changed

6 files changed

+42
-24
lines changed

app/views/clipboard.scala.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
@()(implicit request: RequestHeader)
2+
13
<script type="text/javascript" charset="utf-8" src="@routes.Assets.versioned("lib/clipboard.js/clipboard.js")"></script>
2-
<script type="text/javascript">
4+
@views.html.helper.script('type -> "text/javascript") {
35
(function(){
46
var pre = document.getElementsByClassName('prettyprint');
57
for (var i = 0; i < pre.length; i++) {
@@ -36,4 +38,4 @@
3638
});
3739

3840
})();
39-
</script>
41+
}

app/views/documentation/algolia.scala.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
@(context: models.documentation.TranslationContext)
1+
@(context: models.documentation.TranslationContext)(implicit request: RequestHeader)
22

33
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script>
4-
<script type="text/javascript"> docsearch({
4+
@views.html.helper.script('type -> "text/javascript") {
5+
docsearch({
56
apiKey: 'a0b34e68c804cf96e76adcb02d47159b',
67
indexName: 'playframework',
78
inputSelector: '#search-input',
@@ -14,4 +15,4 @@
1415
]
1516
}
1617
});
17-
</script>
18+
}

app/views/documentation/header.scala.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ <h1>Documentation</h1>
1616

1717
<hr class="clear"/>
1818

19-
<script type="text/javascript">
19+
@views.html.helper.script('type -> "text/javascript") {
2020
// On start, check if flex mod is enabled
2121
if (localStorage && localStorage['flex'] == "true" ) document.body.className += " flex"
22-
</script>
22+
}
2323

2424
@maybeContext.map { context =>
2525
@algolia(context)

app/views/main.scala.html

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,27 +21,28 @@
2121

2222
<!-- OneTrust Cookies Consent Notice (Production Standard, playframework.com, en-GB) start -->
2323
<script src="https://optanon.blob.core.windows.net/consent/cf9a6823-fec0-455d-b6c6-5f386804e808.js" type="text/javascript" charset="UTF-8"></script>
24-
<script type="text/javascript">
24+
@views.html.helper.script('type -> "text/javascript") {
2525
function OptanonWrapper() {
2626
//one trust inserts here
2727
}
28-
</script>
28+
}
2929
<!-- OneTrust Cookies Consent Notice (Production Standard, playframework.com, en-GB) end -->
3030

3131
<!--[if lt IE 9]>
3232
<script src="@routes.Assets.versioned("lib/html5shiv/html5shiv.js")"></script>
3333
<![endif]-->
3434
<script src="@routes.Assets.versioned("lib/jquery/jquery.js")"></script>
3535
<script src="@routes.Assets.versioned("javascripts/main.js")"></script>
36-
<script type="application/ld+json">
37-
{
38-
"@@context" : "http://schema.org",
39-
"@@type" : "WebSite",
40-
"name" : "Play Framework",
41-
"alternateName" : "The High Velocity Web Framework for Java and Scala",
42-
"url" : "https://playframework.com"
36+
@views.html.helper.script('type -> "application/ld+json") {
37+
{
38+
"@@context" : "http://schema.org",
39+
"@@type" : "WebSite",
40+
"name" : "Play Framework",
41+
"alternateName" : "The High Velocity Web Framework for Java and Scala",
42+
"url" : "https://playframework.com"
43+
}
4344
}
44-
</script>
45+
4546
</head>
4647
<body class="@scope">
4748
<!--[if lt IE 7]>

app/views/prettify.scala.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
@()(implicit request: RequestHeader)
12
<script type="text/javascript" charset="utf-8" src="@routes.Assets.versioned("lib/prettify/prettify.js")"></script>
23
<script type="text/javascript" charset="utf-8" src="@routes.Assets.versioned("lib/prettify/lang-scala.js")"></script>
3-
<script type="text/javascript">
4-
$(function(){
5-
window.prettyPrint && prettyPrint()
6-
});
7-
</script>
4+
@views.html.helper.script('type -> "text/javascript") {
5+
$(function(){
6+
window.prettyPrint && prettyPrint()
7+
});
8+
}
89
@clipboard()

conf/application.conf

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,25 @@ play {
1919
server.netty.option.child.SO_KEEPALIVE = true
2020

2121
filters {
22+
enabled += play.filters.csp.CSPFilter
23+
csp {
24+
nonce {
25+
enabled = true
26+
}
27+
directives {
28+
default-src = "'self'"
29+
img-src = "'self' *.githubusercontent.com *.google-analytics.com d379ifj7s9wntv.cloudfront.net"
30+
font-src = "'self' data: fonts.gstatic.com"
31+
script-src = ${play.filters.csp.nonce.pattern} "'self' 'unsafe-eval' *.algolia.net *.algolianet.com www.google-analytics.com *.googleapis.com cdn.jsdelivr.net munchkin.marketo.net *.mktoresp.com optanon.blob.core.windows.net"
32+
style-src = "'self' fonts.googleapis.com cdn.jsdelivr.net optanon.blob.core.windows.net"
33+
connect-src = "'self' *.mktoresp.com *.algolia.net *.algolianet.com"
34+
}
35+
}
2236
headers {
2337
frameOptions = "sameorigin"
24-
contentSecurityPolicy="default-src 'self'; img-src 'self' *.githubusercontent.com *.google-analytics.com d379ifj7s9wntv.cloudfront.net; font-src 'self' data: fonts.gstatic.com; script-src 'self' 'unsafe-eval' *.algolia.net *.algolianet.com www.google-analytics.com *.googleapis.com cdn.jsdelivr.net munchkin.marketo.net *.mktoresp.com optanon.blob.core.windows.net 'sha256-Mz1BSEhQ2FXaHzVWxucxc0+PCwT6oyt/5UPqDVlUugs=' 'sha256-1IG7kxxg7+f1m8Iu+Dk44NMBBV2ZjAkq7dalJrzDJMM=' 'sha256-n73RBf/LVzJGkBNoNFYhY2JnwJDTOX/xUOK5XYVcFOI=' 'sha256-DScy2dpFEzZofKeEv/orAZJj/q21B49aHew7suEpfFs=' 'sha256-17TcZWrBMS5XH+2P8hJM6WdgJNdvHZC6w6nhVdCKQoA='; style-src 'self' fonts.googleapis.com cdn.jsdelivr.net optanon.blob.core.windows.net 'sha256-HNYzPTRt75YR/Yjz4EVJvRKMVMBbL6CMpl655m4gDcw=' 'sha256-DBEW4pxWYTcPK7CjJPI+BiO8HUcAwfzMzbFusCyqWWQ=' 'sha256-wYq1X7cBoJbqNegyYiUCSuwas5okdICKhCGXkQLi/EM=' 'sha256-9DTrbcAci4RgTNhuuPqjM9Fs+58Ek/5sYa0HpsNACE4='; connect-src 'self' *.mktoresp.com *.algolia.net *.algolianet.com"
2538
}
2639
hosts {
27-
allowed = [".playframework.com", "localhost", "playframework-com-app"] # playframework-com-app is the upstream host configured in nginx
40+
allowed = [".playframework.com", "localhost", "playframework-com-app", ".playframework1.com"] # playframework-com-app is the upstream host configured in nginx
2841
}
2942
}
3043
}

0 commit comments

Comments
 (0)