When I went to implement a content security policy on http://apps.frickjack.com I was disappointed to realize that the 'Content-Security-Policy' header is not one of the standard headers supported by S3's metadata API. This bLog
explains an approach using lambda on the CloudFront edge, but that looks crazy.
Fortunately - it turns out we can add a basic security policy to a page with a meta tag, so I added a <meta http-equiv="Content-Security-Policy" ...> tag to the nunjucks template that builds apps.frickjack.com's html pages at gulp compile time. The full code is on github:
<meta http-equiv="Content-Security-Policy" content=" default-src 'none'; img-src 'self' data: https://www.google-analytics.com; script-src 'self' https://www.google-analytics.com; style-src 'self' https://unpkg.com https://fonts.googleapis.com; object-src 'none'; font-src 'self' https://fonts.googleapis.com https://fonts.gstatic.com " >