Skip to content

Commit e21ab51

Browse files
committed
fix rubocop violations
1 parent 194c6e3 commit e21ab51

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+191
-149
lines changed

Gemfile

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1+
# frozen_string_literal: true
12
source "https://rubygems.org"
23

34
gemspec
45

56
group :test do
6-
gem "tins", "~> 1.6.0" # 1.7 requires ruby 2.0
7-
gem "pry-nav"
7+
gem "coveralls"
88
gem "json", "~> 1"
9+
gem "pry-nav"
910
gem "rack", "~> 1"
1011
gem "rspec"
1112
gem "rubocop", "~> 0.47.0"
1213
gem "rubocop-github"
13-
gem "coveralls"
1414
gem "term-ansicolor", "< 1.4"
15+
gem "tins", "~> 1.6.0" # 1.7 requires ruby 2.0
1516
end
1617

1718
group :guard do
18-
gem "guard-rspec", platforms: [:ruby_19, :ruby_20, :ruby_21, :ruby_22]
1919
gem "growl"
20+
gem "guard-rspec", platforms: [:ruby_19, :ruby_20, :ruby_21, :ruby_22]
2021
gem "rb-fsevent"
2122
end

Guardfile

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
guard :rspec, cmd: "bundle exec rspec", all_on_start: true, all_after_pass: true do
23
require "guard/rspec/dsl"
34
dsl = Guard::RSpec::Dsl.new(self)

Rakefile

+13-12
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#!/usr/bin/env rake
2-
require 'bundler/gem_tasks'
3-
require 'rspec/core/rake_task'
4-
require 'net/http'
5-
require 'net/https'
2+
# frozen_string_literal: true
3+
require "bundler/gem_tasks"
4+
require "rspec/core/rake_task"
5+
require "net/http"
6+
require "net/https"
67

78
desc "Run RSpec"
89
# RSpec::Core::RakeTask.new(:spec)
@@ -12,25 +13,25 @@ RSpec::Core::RakeTask.new do |t|
1213
end
1314

1415
begin
15-
require 'rdoc/task'
16+
require "rdoc/task"
1617
rescue LoadError
17-
require 'rdoc/rdoc'
18-
require 'rake/rdoctask'
18+
require "rdoc/rdoc"
19+
require "rake/rdoctask"
1920
RDoc::Task = Rake::RDocTask
2021
end
2122

2223
begin
23-
require 'rubocop/rake_task'
24+
require "rubocop/rake_task"
2425
RuboCop::RakeTask.new
2526
rescue LoadError
2627
task(:rubocop) { $stderr.puts "RuboCop is disabled" }
2728
end
2829

2930
RDoc::Task.new(:rdoc) do |rdoc|
30-
rdoc.rdoc_dir = 'rdoc'
31-
rdoc.title = 'SecureHeaders'
32-
rdoc.options << '--line-numbers'
33-
rdoc.rdoc_files.include('lib/**/*.rb')
31+
rdoc.rdoc_dir = "rdoc"
32+
rdoc.title = "SecureHeaders"
33+
rdoc.options << "--line-numbers"
34+
rdoc.rdoc_files.include("lib/**/*.rb")
3435
end
3536

3637
task default: [:spec, :rubocop]

lib/secure_headers.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
require "secure_headers/configuration"
23
require "secure_headers/hash_helper"
34
require "secure_headers/headers/cookie"

lib/secure_headers/configuration.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
require 'yaml'
1+
# frozen_string_literal: true
2+
require "yaml"
23

34
module SecureHeaders
45
class Configuration

lib/secure_headers/hash_helper.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
require 'base64'
1+
# frozen_string_literal: true
2+
require "base64"
23

34
module SecureHeaders
45
module HashHelper

lib/secure_headers/headers/clear_site_data.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class ClearSiteDataConfigError < StandardError; end
34
class ClearSiteData
@@ -17,7 +18,7 @@ class << self
1718
# Public: make an Clear-Site-Data header name, value pair
1819
#
1920
# Returns nil if not configured, returns header name and value if configured.
20-
def make_header(config=nil)
21+
def make_header(config = nil)
2122
case config
2223
when nil, OPT_OUT, []
2324
# noop

lib/secure_headers/headers/content_security_policy.rb

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
require_relative 'policy_management'
2-
require_relative 'content_security_policy_config'
3-
require 'useragent'
1+
# frozen_string_literal: true
2+
require_relative "policy_management"
3+
require_relative "content_security_policy_config"
4+
require "useragent"
45

56
module SecureHeaders
67
class ContentSecurityPolicy
@@ -229,7 +230,7 @@ def nonces_supported?
229230
end
230231

231232
def symbol_to_hyphen_case(sym)
232-
sym.to_s.tr('_', '-')
233+
sym.to_s.tr("_", "-")
233234
end
234235
end
235236
end

lib/secure_headers/headers/content_security_policy_config.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
module DynamicConfig
34
def self.included(base)

lib/secure_headers/headers/cookie.rb

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
require 'cgi'
2-
require 'secure_headers/utils/cookies_config'
1+
# frozen_string_literal: true
2+
require "cgi"
3+
require "secure_headers/utils/cookies_config"
34

45
module SecureHeaders
56
class CookiesConfigError < StandardError; end
@@ -113,7 +114,7 @@ def parse(cookie)
113114
return unless cookie
114115

115116
cookie.split(/[;,]\s?/).each do |pairs|
116-
name, values = pairs.split('=',2)
117+
name, values = pairs.split("=", 2)
117118
name = CGI.unescape(name)
118119

119120
attribute = name.downcase.to_sym

lib/secure_headers/headers/policy_management.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
module PolicyManagement
34
def self.included(base)

lib/secure_headers/headers/public_key_pins.rb

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class PublicKeyPinsConfigError < StandardError; end
34
class PublicKeyPins
@@ -54,7 +55,7 @@ def value
5455
pin_directives,
5556
report_uri_directive,
5657
subdomain_directive
57-
].compact.join('; ').strip
58+
].compact.join("; ").strip
5859
end
5960

6061
def pin_directives
@@ -63,7 +64,7 @@ def pin_directives
6364
pin.map do |token, hash|
6465
"pin-#{token}=\"#{hash}\"" if HASH_ALGORITHMS.include?(token)
6566
end
66-
end.join('; ')
67+
end.join("; ")
6768
end
6869

6970
def max_age_directive
@@ -75,7 +76,7 @@ def report_uri_directive
7576
end
7677

7778
def subdomain_directive
78-
@include_subdomains ? 'includeSubDomains' : nil
79+
@include_subdomains ? "includeSubDomains" : nil
7980
end
8081
end
8182
end

lib/secure_headers/headers/referrer_policy.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class ReferrerPolicyConfigError < StandardError; end
34
class ReferrerPolicy

lib/secure_headers/headers/strict_transport_security.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class STSConfigError < StandardError; end
34

45
class StrictTransportSecurity
5-
HEADER_NAME = 'Strict-Transport-Security'.freeze
6+
HEADER_NAME = "Strict-Transport-Security".freeze
67
HSTS_MAX_AGE = "631138519"
78
DEFAULT_VALUE = "max-age=" + HSTS_MAX_AGE
89
VALID_STS_HEADER = /\Amax-age=\d+(; includeSubdomains)?(; preload)?\z/i

lib/secure_headers/headers/x_content_type_options.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class XContentTypeOptionsConfigError < StandardError; end
34

lib/secure_headers/headers/x_download_options.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class XDOConfigError < StandardError; end
34
class XDownloadOptions
45
HEADER_NAME = "X-Download-Options".freeze
5-
DEFAULT_VALUE = 'noopen'
6+
DEFAULT_VALUE = "noopen"
67
CONFIG_KEY = :x_download_options
78

89
class << self

lib/secure_headers/headers/x_frame_options.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class XFOConfigError < StandardError; end
34
class XFrameOptions

lib/secure_headers/headers/x_permitted_cross_domain_policies.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class XPCDPConfigError < StandardError; end
34
class XPermittedCrossDomainPolicies
45
HEADER_NAME = "X-Permitted-Cross-Domain-Policies".freeze
5-
DEFAULT_VALUE = 'none'
6+
DEFAULT_VALUE = "none"
67
VALID_POLICIES = %w(all none master-only by-content-type by-ftp-filename)
78
CONFIG_KEY = :x_permitted_cross_domain_policies
89

lib/secure_headers/headers/x_xss_protection.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class XXssProtectionConfigError < StandardError; end
34
class XXssProtection
4-
HEADER_NAME = 'X-XSS-Protection'.freeze
5+
HEADER_NAME = "X-XSS-Protection".freeze
56
DEFAULT_VALUE = "1; mode=block"
67
VALID_X_XSS_HEADER = /\A[01](; mode=block)?(; report=.*)?\z/i
78
CONFIG_KEY = :x_xss_protection

lib/secure_headers/middleware.rb

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class Middleware
34
HPKP_SAME_HOST_WARNING = "[WARNING] HPKP report host should not be the same as the request host. See https://github.com/twitter/secureheaders/issues/166"
@@ -25,33 +26,33 @@ def call(env)
2526

2627
# inspired by https://github.com/tobmatth/rack-ssl-enforcer/blob/6c014/lib/rack/ssl-enforcer.rb#L183-L194
2728
def flag_cookies!(headers, config)
28-
if cookies = headers['Set-Cookie']
29+
if cookies = headers["Set-Cookie"]
2930
# Support Rails 2.3 / Rack 1.1 arrays as headers
3031
cookies = cookies.split("\n") unless cookies.is_a?(Array)
3132

32-
headers['Set-Cookie'] = cookies.map do |cookie|
33+
headers["Set-Cookie"] = cookies.map do |cookie|
3334
SecureHeaders::Cookie.new(cookie, config).to_s
3435
end.join("\n")
3536
end
3637
end
3738

3839
# disable Secure cookies for non-https requests
3940
def override_secure(env, config = {})
40-
if scheme(env) != 'https'
41-
config.merge!(secure: false)
41+
if scheme(env) != "https"
42+
config[:secure] = false
4243
end
4344

4445
config
4546
end
4647

4748
# derived from https://github.com/tobmatth/rack-ssl-enforcer/blob/6c014/lib/rack/ssl-enforcer.rb#L119
4849
def scheme(env)
49-
if env['HTTPS'] == 'on' || env['HTTP_X_SSL_REQUEST'] == 'on'
50-
'https'
51-
elsif env['HTTP_X_FORWARDED_PROTO']
52-
env['HTTP_X_FORWARDED_PROTO'].split(',')[0]
50+
if env["HTTPS"] == "on" || env["HTTP_X_SSL_REQUEST"] == "on"
51+
"https"
52+
elsif env["HTTP_X_FORWARDED_PROTO"]
53+
env["HTTP_X_FORWARDED_PROTO"].split(",")[0]
5354
else
54-
env['rack.url_scheme']
55+
env["rack.url_scheme"]
5556
end
5657
end
5758
end

lib/secure_headers/railtie.rb

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1+
# frozen_string_literal: true
12
# rails 3.1+
23
if defined?(Rails::Railtie)
34
module SecureHeaders
45
class Railtie < Rails::Railtie
56
isolate_namespace SecureHeaders if defined? isolate_namespace # rails 3.0
6-
conflicting_headers = ['X-Frame-Options', 'X-XSS-Protection',
7-
'X-Permitted-Cross-Domain-Policies', 'X-Download-Options',
8-
'X-Content-Type-Options', 'Strict-Transport-Security',
9-
'Content-Security-Policy', 'Content-Security-Policy-Report-Only',
10-
'Public-Key-Pins', 'Public-Key-Pins-Report-Only', 'Referrer-Policy']
7+
conflicting_headers = ["X-Frame-Options", "X-XSS-Protection",
8+
"X-Permitted-Cross-Domain-Policies", "X-Download-Options",
9+
"X-Content-Type-Options", "Strict-Transport-Security",
10+
"Content-Security-Policy", "Content-Security-Policy-Report-Only",
11+
"Public-Key-Pins", "Public-Key-Pins-Report-Only", "Referrer-Policy"]
1112

1213
initializer "secure_headers.middleware" do
1314
Rails.application.config.middleware.insert_before 0, SecureHeaders::Middleware
1415
end
1516

1617
rake_tasks do
17-
load File.expand_path(File.join('..', '..', 'lib', 'tasks', 'tasks.rake'), File.dirname(__FILE__))
18+
load File.expand_path(File.join("..", "..", "lib", "tasks", "tasks.rake"), File.dirname(__FILE__))
1819
end
1920

2021
initializer "secure_headers.action_controller" do

lib/secure_headers/utils/cookies_config.rb

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
class CookiesConfig
34

@@ -51,10 +52,10 @@ def validate_samesite_boolean_config!
5152
def validate_samesite_hash_config!
5253
# validate Hash-based samesite configuration
5354
if is_hash?(config[:samesite][:lax])
54-
validate_exclusive_use_of_hash_constraints!(config[:samesite][:lax], 'samesite lax')
55+
validate_exclusive_use_of_hash_constraints!(config[:samesite][:lax], "samesite lax")
5556

5657
if is_hash?(config[:samesite][:strict])
57-
validate_exclusive_use_of_hash_constraints!(config[:samesite][:strict], 'samesite strict')
58+
validate_exclusive_use_of_hash_constraints!(config[:samesite][:strict], "samesite strict")
5859
validate_exclusive_use_of_samesite_enforcement!(:only)
5960
validate_exclusive_use_of_samesite_enforcement!(:except)
6061
end

lib/secure_headers/view_helper.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
module SecureHeaders
23
module ViewHelpers
34
include SecureHeaders::HashHelper
@@ -75,7 +76,7 @@ def hashed_tag(type, directive, hashes, raise_error_on_unrecognized_hash, block)
7576
end
7677

7778
content = capture(&block)
78-
file_path = File.join('app', 'views', self.instance_variable_get(:@virtual_path) + '.html.erb')
79+
file_path = File.join("app", "views", self.instance_variable_get(:@virtual_path) + ".html.erb")
7980

8081
if raise_error_on_unrecognized_hash
8182
hash_value = hash_source(content)

lib/tasks/tasks.rake

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# frozen_string_literal: true
12
INLINE_SCRIPT_REGEX = /(<script(\s*(?!src)([\w\-])+=([\"\'])[^\"\']+\4)*\s*>)(.*?)<\/script>/mx unless defined? INLINE_SCRIPT_REGEX
23
INLINE_STYLE_REGEX = /(<style[^>]*>)(.*?)<\/style>/mx unless defined? INLINE_STYLE_REGEX
34
INLINE_HASH_SCRIPT_HELPER_REGEX = /<%=\s?hashed_javascript_tag(.*?)\s+do\s?%>(.*?)<%\s*end\s*%>/mx unless defined? INLINE_HASH_SCRIPT_HELPER_REGEX
@@ -73,7 +74,7 @@ namespace :secure_headers do
7374
end
7475
end
7576

76-
File.open(SecureHeaders::Configuration::HASH_CONFIG_FILE, 'w') do |file|
77+
File.open(SecureHeaders::Configuration::HASH_CONFIG_FILE, "w") do |file|
7778
file.write(script_hashes.to_yaml)
7879
end
7980

secure_headers.gemspec

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# -*- encoding: utf-8 -*-
2+
# frozen_string_literal: true
23
Gem::Specification.new do |gem|
34
gem.name = "secure_headers"
45
gem.version = "3.6.4"
56
gem.authors = ["Neil Matatall"]
67
gem.email = ["neil.matatall@gmail.com"]
7-
gem.description = 'Manages application of security headers with many safe defaults.'
8+
gem.description = "Manages application of security headers with many safe defaults."
89
gem.summary = 'Add easily configured security headers to responses
910
including content-security-policy, x-frame-options,
1011
strict-transport-security, etc.'

spec/lib/secure_headers/configuration_spec.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
require 'spec_helper'
1+
# frozen_string_literal: true
2+
require "spec_helper"
23

34
module SecureHeaders
45
describe Configuration do

spec/lib/secure_headers/headers/clear_site_data_spec.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
require 'spec_helper'
1+
# frozen_string_literal: true
2+
require "spec_helper"
23

34
module SecureHeaders
45
describe ClearSiteData do

0 commit comments

Comments
 (0)