secure_headers 2.4.3 → 2.4.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of secure_headers might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2e4d6f82d6ed89fdcda1354e5ef6f802696bb192
4
- data.tar.gz: ed1b4550998780641a7c09cdf5d13147ca42c7a6
3
+ metadata.gz: 72789dc25f6714e7bb64fc9b4255d1b0cbcb2ccf
4
+ data.tar.gz: 0a0e505e9f9ebed4807e3a8a52c160e630f4a1ae
5
5
  SHA512:
6
- metadata.gz: 23c5adf02fd51a402a5daec6f46afb2c84022544f4572f67b65fdf1d9d4b08f3684d67cc9fd3031ec15530f988e1f52f19e63b6d712728c6dd44b366d8246519
7
- data.tar.gz: ff8f0681465846609d2e1d9962eab1ac98ada78fb837f67a7981bfef549643ec2bdb4985927dabc20ae3f6eb6e79c9ea4a240a37d8ac631b4193870df0c1f268
6
+ metadata.gz: 96717b49d93a916952b139b50eec64df0f056ec59168c6abddb73b33893966d5309e8a956374ab55730a831288ca2c44dad3f49bef7f27ec6b2168be0881f778
7
+ data.tar.gz: 0615cef78d2724fd5cab650f9da4ee008443f1d2111e2065ffa4b04c43db2535c5d567687163e92f606d0c290b87a1a55df537e8c2328582b412f064be07f87e
data/README.md CHANGED
@@ -8,7 +8,7 @@ The gem will automatically apply several headers that are related to security.
8
8
  - X-Content-Type-Options - [Prevent content type sniffing](http://msdn.microsoft.com/en-us/library/ie/gg622941\(v=vs.85\).aspx)
9
9
  - X-Download-Options - [Prevent file downloads opening](http://msdn.microsoft.com/en-us/library/ie/jj542450(v=vs.85).aspx)
10
10
  - X-Permitted-Cross-Domain-Policies - [Restrict Adobe Flash Player's access to data](https://www.adobe.com/devnet/adobe-media-server/articles/cross-domain-xml-for-streaming.html)
11
- - Public Key Pinning - Pin certificate fingerprints in the browser to prevent man-in-the-middle attacks due to compromised Certificate Authorities. [Public Key Pinnning Specification](https://tools.ietf.org/html/rfc7469)
11
+ - Public Key Pinning - Pin certificate fingerprints in the browser to prevent man-in-the-middle attacks due to compromised Certificate Authorities. [Public Key Pinning Specification](https://tools.ietf.org/html/rfc7469)
12
12
 
13
13
  ## Usage
14
14
 
@@ -52,21 +52,23 @@ module SecureHeaders
52
52
 
53
53
  def header_hash(options = nil)
54
54
  ALL_HEADER_CLASSES.inject({}) do |memo, klass|
55
- config = if options.is_a?(Hash) && options[klass::Constants::CONFIG_KEY]
55
+ # must use !options[key].nil? because 'false' represents opting out, nil
56
+ # represents use global default.
57
+ config = if options.is_a?(Hash) && !options[klass::Constants::CONFIG_KEY].nil?
56
58
  options[klass::Constants::CONFIG_KEY]
57
59
  else
58
60
  ::SecureHeaders::Configuration.send(klass::Constants::CONFIG_KEY)
59
61
  end
60
62
 
61
63
  unless klass == SecureHeaders::PublicKeyPins && !config.is_a?(Hash)
62
- header = get_a_header(klass::Constants::CONFIG_KEY, klass, config)
63
- memo[header.name] = header.value
64
+ header = get_a_header(klass, config)
65
+ memo[header.name] = header.value if header
64
66
  end
65
67
  memo
66
68
  end
67
69
  end
68
70
 
69
- def get_a_header(name, klass, options)
71
+ def get_a_header(klass, options)
70
72
  return if options == false
71
73
  klass.new(options)
72
74
  end
@@ -210,7 +212,7 @@ module SecureHeaders
210
212
  def set_a_header(name, klass, options=nil)
211
213
  options = secure_header_options_for(name, options)
212
214
  return if options == false
213
- set_header(SecureHeaders::get_a_header(name, klass, options))
215
+ set_header(SecureHeaders::get_a_header(klass, options))
214
216
  end
215
217
 
216
218
  def set_header(name_or_header, value=nil)
@@ -1,3 +1,3 @@
1
1
  module SecureHeaders
2
- VERSION = "2.4.3"
2
+ VERSION = "2.4.4"
3
3
  end
@@ -8,6 +8,7 @@ describe SecureHeaders do
8
8
  let(:request) {double(:ssl? => true, :url => 'https://example.com')}
9
9
 
10
10
  before(:each) do
11
+ reset_config
11
12
  stub_user_agent(nil)
12
13
  allow(headers).to receive(:[])
13
14
  allow(subject).to receive(:response).and_return(response)
@@ -171,6 +172,23 @@ describe SecureHeaders do
171
172
  expect_default_values(hash)
172
173
  end
173
174
 
175
+ it "allows opting out" do
176
+ hash = SecureHeaders::header_hash(:csp => false, :hpkp => false)
177
+ expect(hash['Content-Security-Policy-Report-Only']).to be_nil
178
+ expect(hash['Content-Security-Policy']).to be_nil
179
+ end
180
+
181
+ it "allows opting out with config" do
182
+ ::SecureHeaders::Configuration.configure do |config|
183
+ config.hsts = false
184
+ config.csp = false
185
+ end
186
+
187
+ hash = SecureHeaders::header_hash
188
+ expect(hash['Content-Security-Policy-Report-Only']).to be_nil
189
+ expect(hash['Content-Security-Policy']).to be_nil
190
+ end
191
+
174
192
  it "produces a hash with a mix of config values, override values, and default values" do
175
193
  ::SecureHeaders::Configuration.configure do |config|
176
194
  config.hsts = { :max_age => '123456'}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: secure_headers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.3
4
+ version: 2.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neil Matatall
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-23 00:00:00.000000000 Z
11
+ date: 2015-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake