bridgetown-content-security-policy 0.1.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 292cea094aafa8dee2b33e25a254763b873bbbc0dea3071b3efa9708cb326e88
4
- data.tar.gz: 344305e3fea005fc0534d83587d307de52f59b924a0e95e5688880e02eecf0a4
3
+ metadata.gz: c3e351af829a35641581be3e470fa4f78a5ebb041c8c8474376e73cc409fa595
4
+ data.tar.gz: b0e54b5d25568a18cf5ddd85e1958c94f4c9bcbb9f65de1df6bd21900a4ec27f
5
5
  SHA512:
6
- metadata.gz: feb6637a476c50ee50ac2c9ed8068bfd83afbd4ac30754284b5a80ac5e76b2b9349ef3138ab1b5b708af50460324815bda080f90f69c85f5295ab6ba19646532
7
- data.tar.gz: 897c577c9924d0bf602c1b1acfd8d6caecfaeb981458e517e538a2d2bad17f19fae2dfb03288fc5885b0a8b281a70d7c16426d620ef912c41f4ace318ca86f50
6
+ metadata.gz: 4aa5d832289b2bb28a918969afc7d5af0595241aaecfa145092b521180700f84309bb66b0e0466722c6d370992bd89d8c46aee30f22df843411df8a09d8c0414
7
+ data.tar.gz: e45993e4d39e9645a444240eef1175a153037dc524755b002d46223449a94fade0da020742084e2deea0331967df98ba8dc4df3b9a2442bf2479a17008b4deb6
data/.gitignore CHANGED
@@ -36,3 +36,6 @@ test/dest
36
36
  .bridgetown-metadata
37
37
  .bridgetown-cache
38
38
  .bridgetown-webpack
39
+
40
+ # macOS
41
+ .DS_Store
data/README.md CHANGED
@@ -16,12 +16,20 @@ The plugin allows you to define one or more Content Security Policies using a co
16
16
 
17
17
  The installation should create a `content_security_policy.config.rb` file in your project root. More info about the DSL is contained in the file.
18
18
 
19
- Add `{% content_security_policy %}` in the `head` tag of *your layout file* to include the CSP on all your pages.
20
-
21
- You can also define a specific CSP for pages by setting `content_security_policy:` in your frontmatter; and then defining the relevent CSP in `content_security_policy.config.rb`.
19
+ You can define a specific CSP for pages by setting `content_security_policy:` in your frontmatter; and then defining the relevent CSP in `content_security_policy.config.rb`.
22
20
 
23
21
  All page specific CSPs will inherit from the `default` CSP.
24
22
 
23
+ ### Including the CSP on your web pages
24
+
25
+ You'll need to add a `content_security_policy` tag to your **layout file(s)** to include the CSP meta tag in all your pages. This plugin supports *Liquid*, *ERB* and other Tilt based templating languages like *HAML* or *Slim*.
26
+
27
+ - **Liquid templates**: `{% content_security_policy %}`
28
+ - **ERB**: `<%= content_security_policy %>`
29
+
30
+ Add the appropriate CSP tag in the `head` tag of **_your layout file_** to include the CSP on all your pages.
31
+
32
+
25
33
  ## Testing
26
34
 
27
35
  * Run `bundle exec rake test` to run the test suite
@@ -4,18 +4,21 @@ add_bridgetown_plugin "bridgetown-content-security-policy"
4
4
 
5
5
  create_file "content_security_policy.config.rb" do
6
6
  <<~RUBY
7
- # The recommended default Content Security Policy
7
+ # The recommended default Content Security Policy
8
8
 
9
9
  BridgetownContentSecurityPolicy.configure :default do |policy|
10
10
  policy.default_src :self
11
11
  policy.img_src :self, :data
12
12
  policy.object_src :none
13
+
14
+ # Allow BrowserSync in development
15
+ policy.script_src :self, :unsafe_inline if Bridgetown.environment.development?
13
16
  end
14
17
 
15
18
  # All other policies with inherit from :default
16
19
  # To allow inline styles on certain pages, we can define the following
17
20
  # policy which inherits all the values from :default and defines a style_src
18
- #
21
+ #
19
22
  # BridgetownContentSecurityPolicy.configure :allow_inline_styles do |policy|
20
23
  # policy.style_src :self, :unsafe_inline
21
24
  # end
@@ -18,15 +18,25 @@ module BridgetownContentSecurityPolicy
18
18
  # rubocop:enable Layout/LineLength
19
19
  end
20
20
 
21
- liquid_tag "content_security_policy", :render
21
+ liquid_tag "content_security_policy" do |_attributes, tag|
22
+ render tag.context["page"]["content_security_policy"]
23
+ end
24
+
25
+ helper "_csp" do |policy_name|
26
+ render policy_name
27
+ end
28
+
29
+ helper "content_security_policy", helpers_scope: true do
30
+ _csp view.page.data.content_security_policy
31
+ end
22
32
  end
23
33
 
24
34
  private
25
35
 
26
- def render(_attributes, tag)
36
+ def render(policy_name = nil)
27
37
  return "" unless default_policy
28
38
 
29
- page_specific_policy_name = tag.context["page"]["content_security_policy"]&.to_sym
39
+ page_specific_policy_name = policy_name&.to_sym
30
40
  page_specific_policy = BridgetownContentSecurityPolicy.policies[page_specific_policy_name]
31
41
 
32
42
  if page_specific_policy_name && page_specific_policy.nil?
@@ -35,10 +45,10 @@ module BridgetownContentSecurityPolicy
35
45
 
36
46
  policy = default_policy.merge(page_specific_policy)
37
47
 
38
- render_policy policy
48
+ markup_for_policy policy
39
49
  end
40
50
 
41
- def render_policy(policy)
51
+ def markup_for_policy(policy)
42
52
  "<meta http-equiv=\"Content-Security-Policy\" content=\"#{policy.build}\">"
43
53
  end
44
54
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BridgetownContentSecurityPolicy
4
- VERSION = "0.1.1"
4
+ VERSION = "1.0.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bridgetown-content-security-policy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ayush Newatia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-12 00:00:00.000000000 Z
11
+ date: 2021-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bridgetown
@@ -92,7 +92,6 @@ executables: []
92
92
  extensions: []
93
93
  extra_rdoc_files: []
94
94
  files:
95
- - ".DS_Store"
96
95
  - ".gitignore"
97
96
  - ".rubocop.yml"
98
97
  - CHANGELOG.md
data/.DS_Store DELETED
Binary file