rack-protection 1.5.5 → 2.0.0.beta1

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.

Potentially problematic release.


This version of rack-protection might be problematic. Click here for more details.

@@ -1,26 +1,39 @@
1
- # Run `rake rack-protection.gemspec` to update the gemspec.
1
+ $:.unshift File.expand_path("../../lib", __FILE__)
2
+ require "sinatra/version"
3
+
2
4
  Gem::Specification.new do |s|
3
5
  # general infos
4
6
  s.name = "rack-protection"
5
- s.version = "1.5.5"
6
- s.description = "You should use protection!"
7
- s.homepage = "http://github.com/rkh/rack-protection"
7
+ s.version = Sinatra::VERSION
8
+ s.description = "Protect against typical web attacks, works with all Rack apps, including Rails."
9
+ s.homepage = "http://github.com/sinatra/rack-protection"
8
10
  s.summary = s.description
9
11
  s.license = 'MIT'
10
12
 
11
13
  # generated from git shortlog -sn
12
14
  s.authors = [
13
15
  "Konstantin Haase",
16
+ "Maurizio De Santis",
14
17
  "Alex Rodionov",
15
- "Patrick Ellis",
16
18
  "Jason Staten",
19
+ "Patrick Ellis",
17
20
  "ITO Nobuaki",
18
21
  "Jeff Welling",
19
22
  "Matteo Centenaro",
23
+ "Akzhan Abdulin",
24
+ "Alan deLevie",
25
+ "Bj\u{f8}rge N\u{e6}ss",
26
+ "Chris Heald",
27
+ "Chris Mytton",
28
+ "Corey Ward",
29
+ "Dario Cravero",
30
+ "David Kellum",
20
31
  "Egor Homakov",
21
32
  "Florian Gilcher",
22
33
  "Fojas",
23
34
  "Igor Bochkariov",
35
+ "Josef Stribny",
36
+ "Katrina Owen",
24
37
  "Mael Clerambault",
25
38
  "Martin Mauch",
26
39
  "Renne Nissinen",
@@ -30,46 +43,15 @@ Gem::Specification.new do |s|
30
43
  "TOBY",
31
44
  "Thais Camilo and Konstantin Haase",
32
45
  "Vipul A M",
33
- "Akzhan Abdulin",
34
- "brookemckim",
35
- "Bj\u{f8}rge N\u{e6}ss",
36
- "Chris Heald",
37
- "Chris Mytton",
38
- "Corey Ward",
39
- "Dario Cravero",
40
- "David Kellum"
46
+ "Zachary Scott",
47
+ "ashley williams",
48
+ "brookemckim"
41
49
  ]
42
50
 
43
51
  # generated from git shortlog -sne
44
52
  s.email = [
45
- "konstantin.mailinglists@googlemail.com",
46
- "p0deje@gmail.com",
47
- "jstaten07@gmail.com",
48
- "patrick@soundcloud.com",
49
- "jeff.welling@gmail.com",
50
- "bugant@gmail.com",
51
- "daydream.trippers@gmail.com",
52
- "florian.gilcher@asquera.de",
53
- "developer@fojasaur.us",
54
- "ujifgc@gmail.com",
55
- "mael@clerambault.fr",
56
- "martin.mauch@gmail.com",
57
- "rennex@iki.fi",
58
- "kaz.july.7@gmail.com",
59
- "s.savulchik@gmail.com",
60
- "steve.agalloco@gmail.com",
61
- "toby.net.info.mail+git@gmail.com",
62
- "dev+narwen+rkh@rkh.im",
63
- "vipulnsward@gmail.com",
64
- "akzhan.abdulin@gmail.com",
65
- "brooke@digitalocean.com",
66
- "bjoerge@bengler.no",
67
- "cheald@gmail.com",
68
- "self@hecticjeff.net",
69
- "coreyward@me.com",
70
- "dario@uxtemple.com",
71
- "dek-oss@gravitext.com",
72
- "homakov@gmail.com"
53
+ "mail@zzak.io",
54
+ "konstantin.haase@gmail.com"
73
55
  ]
74
56
 
75
57
  # generated from git ls-files
@@ -77,42 +59,30 @@ Gem::Specification.new do |s|
77
59
  "License",
78
60
  "README.md",
79
61
  "Rakefile",
80
- "lib/rack-protection.rb",
81
- "lib/rack/protection.rb",
82
- "lib/rack/protection/authenticity_token.rb",
83
- "lib/rack/protection/base.rb",
62
+ "Gemfile",
63
+ "rack-protection.gemspec",
64
+ "lib/rack",
65
+ "lib/rack/protection",
84
66
  "lib/rack/protection/escaped_params.rb",
85
- "lib/rack/protection/form_token.rb",
86
- "lib/rack/protection/frame_options.rb",
87
- "lib/rack/protection/http_origin.rb",
88
- "lib/rack/protection/ip_spoofing.rb",
89
- "lib/rack/protection/json_csrf.rb",
90
- "lib/rack/protection/path_traversal.rb",
91
67
  "lib/rack/protection/remote_referrer.rb",
92
- "lib/rack/protection/remote_token.rb",
68
+ "lib/rack/protection/ip_spoofing.rb",
69
+ "lib/rack/protection/base.rb",
93
70
  "lib/rack/protection/session_hijacking.rb",
71
+ "lib/rack/protection/authenticity_token.rb",
94
72
  "lib/rack/protection/version.rb",
73
+ "lib/rack/protection/path_traversal.rb",
74
+ "lib/rack/protection/form_token.rb",
75
+ "lib/rack/protection/json_csrf.rb",
76
+ "lib/rack/protection/http_origin.rb",
77
+ "lib/rack/protection/frame_options.rb",
95
78
  "lib/rack/protection/xss_header.rb",
96
- "rack-protection.gemspec",
97
- "spec/authenticity_token_spec.rb",
98
- "spec/base_spec.rb",
99
- "spec/escaped_params_spec.rb",
100
- "spec/form_token_spec.rb",
101
- "spec/frame_options_spec.rb",
102
- "spec/http_origin_spec.rb",
103
- "spec/ip_spoofing_spec.rb",
104
- "spec/json_csrf_spec.rb",
105
- "spec/path_traversal_spec.rb",
106
- "spec/protection_spec.rb",
107
- "spec/remote_referrer_spec.rb",
108
- "spec/remote_token_spec.rb",
109
- "spec/session_hijacking_spec.rb",
110
- "spec/spec_helper.rb",
111
- "spec/xss_header_spec.rb"
79
+ "lib/rack/protection/remote_token.rb",
80
+ "lib/rack/protection.rb",
81
+ "lib/rack-protection.rb"
112
82
  ]
113
83
 
114
84
  # dependencies
115
85
  s.add_dependency "rack"
116
86
  s.add_development_dependency "rack-test"
117
- s.add_development_dependency "rspec", "~> 2.0"
87
+ s.add_development_dependency "rspec", "~> 3.0.0"
118
88
  end
metadata CHANGED
@@ -1,20 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-protection
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.5
4
+ version: 2.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
8
+ - Maurizio De Santis
8
9
  - Alex Rodionov
9
- - Patrick Ellis
10
10
  - Jason Staten
11
+ - Patrick Ellis
11
12
  - ITO Nobuaki
12
13
  - Jeff Welling
13
14
  - Matteo Centenaro
15
+ - Akzhan Abdulin
16
+ - Alan deLevie
17
+ - Bjørge Næss
18
+ - Chris Heald
19
+ - Chris Mytton
20
+ - Corey Ward
21
+ - Dario Cravero
22
+ - David Kellum
14
23
  - Egor Homakov
15
24
  - Florian Gilcher
16
25
  - Fojas
17
26
  - Igor Bochkariov
27
+ - Josef Stribny
28
+ - Katrina Owen
18
29
  - Mael Clerambault
19
30
  - Martin Mauch
20
31
  - Renne Nissinen
@@ -24,18 +35,13 @@ authors:
24
35
  - TOBY
25
36
  - Thais Camilo and Konstantin Haase
26
37
  - Vipul A M
27
- - Akzhan Abdulin
38
+ - Zachary Scott
39
+ - ashley williams
28
40
  - brookemckim
29
- - Bjørge Næss
30
- - Chris Heald
31
- - Chris Mytton
32
- - Corey Ward
33
- - Dario Cravero
34
- - David Kellum
35
41
  autorequire:
36
42
  bindir: bin
37
43
  cert_chain: []
38
- date: 2018-03-07 00:00:00.000000000 Z
44
+ date: 2016-08-22 00:00:00.000000000 Z
39
45
  dependencies:
40
46
  - !ruby/object:Gem::Dependency
41
47
  name: rack
@@ -71,48 +77,24 @@ dependencies:
71
77
  requirements:
72
78
  - - "~>"
73
79
  - !ruby/object:Gem::Version
74
- version: '2.0'
80
+ version: 3.0.0
75
81
  type: :development
76
82
  prerelease: false
77
83
  version_requirements: !ruby/object:Gem::Requirement
78
84
  requirements:
79
85
  - - "~>"
80
86
  - !ruby/object:Gem::Version
81
- version: '2.0'
82
- description: You should use protection!
87
+ version: 3.0.0
88
+ description: Protect against typical web attacks, works with all Rack apps, including
89
+ Rails.
83
90
  email:
84
- - konstantin.mailinglists@googlemail.com
85
- - p0deje@gmail.com
86
- - jstaten07@gmail.com
87
- - patrick@soundcloud.com
88
- - jeff.welling@gmail.com
89
- - bugant@gmail.com
90
- - daydream.trippers@gmail.com
91
- - florian.gilcher@asquera.de
92
- - developer@fojasaur.us
93
- - ujifgc@gmail.com
94
- - mael@clerambault.fr
95
- - martin.mauch@gmail.com
96
- - rennex@iki.fi
97
- - kaz.july.7@gmail.com
98
- - s.savulchik@gmail.com
99
- - steve.agalloco@gmail.com
100
- - toby.net.info.mail+git@gmail.com
101
- - dev+narwen+rkh@rkh.im
102
- - vipulnsward@gmail.com
103
- - akzhan.abdulin@gmail.com
104
- - brooke@digitalocean.com
105
- - bjoerge@bengler.no
106
- - cheald@gmail.com
107
- - self@hecticjeff.net
108
- - coreyward@me.com
109
- - dario@uxtemple.com
110
- - dek-oss@gravitext.com
111
- - homakov@gmail.com
91
+ - mail@zzak.io
92
+ - konstantin.haase@gmail.com
112
93
  executables: []
113
94
  extensions: []
114
95
  extra_rdoc_files: []
115
96
  files:
97
+ - Gemfile
116
98
  - License
117
99
  - README.md
118
100
  - Rakefile
@@ -133,22 +115,7 @@ files:
133
115
  - lib/rack/protection/version.rb
134
116
  - lib/rack/protection/xss_header.rb
135
117
  - rack-protection.gemspec
136
- - spec/authenticity_token_spec.rb
137
- - spec/base_spec.rb
138
- - spec/escaped_params_spec.rb
139
- - spec/form_token_spec.rb
140
- - spec/frame_options_spec.rb
141
- - spec/http_origin_spec.rb
142
- - spec/ip_spoofing_spec.rb
143
- - spec/json_csrf_spec.rb
144
- - spec/path_traversal_spec.rb
145
- - spec/protection_spec.rb
146
- - spec/remote_referrer_spec.rb
147
- - spec/remote_token_spec.rb
148
- - spec/session_hijacking_spec.rb
149
- - spec/spec_helper.rb
150
- - spec/xss_header_spec.rb
151
- homepage: http://github.com/rkh/rack-protection
118
+ homepage: http://github.com/sinatra/rack-protection
152
119
  licenses:
153
120
  - MIT
154
121
  metadata: {}
@@ -163,13 +130,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
130
  version: '0'
164
131
  required_rubygems_version: !ruby/object:Gem::Requirement
165
132
  requirements:
166
- - - ">="
133
+ - - ">"
167
134
  - !ruby/object:Gem::Version
168
- version: '0'
135
+ version: 1.3.1
169
136
  requirements: []
170
137
  rubyforge_project:
171
- rubygems_version: 2.7.3
138
+ rubygems_version: 2.5.1
172
139
  signing_key:
173
140
  specification_version: 4
174
- summary: You should use protection!
141
+ summary: Protect against typical web attacks, works with all Rack apps, including
142
+ Rails.
175
143
  test_files: []
144
+ has_rdoc:
@@ -1,48 +0,0 @@
1
- require File.expand_path('../spec_helper.rb', __FILE__)
2
-
3
- describe Rack::Protection::AuthenticityToken do
4
- it_behaves_like "any rack application"
5
-
6
- it "denies post requests without any token" do
7
- post('/').should_not be_ok
8
- end
9
-
10
- it "accepts post requests with correct X-CSRF-Token header" do
11
- post('/', {}, 'rack.session' => {:csrf => "a"}, 'HTTP_X_CSRF_TOKEN' => "a")
12
- last_response.should be_ok
13
- end
14
-
15
- it "denies post requests with wrong X-CSRF-Token header" do
16
- post('/', {}, 'rack.session' => {:csrf => "a"}, 'HTTP_X_CSRF_TOKEN' => "b")
17
- last_response.should_not be_ok
18
- end
19
-
20
- it "accepts post form requests with correct authenticity_token field" do
21
- post('/', {"authenticity_token" => "a"}, 'rack.session' => {:csrf => "a"})
22
- last_response.should be_ok
23
- end
24
-
25
- it "denies post form requests with wrong authenticity_token field" do
26
- post('/', {"authenticity_token" => "a"}, 'rack.session' => {:csrf => "b"})
27
- last_response.should_not be_ok
28
- end
29
-
30
- it "prevents ajax requests without a valid token" do
31
- post('/', {}, "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest").should_not be_ok
32
- end
33
-
34
- it "allows for a custom authenticity token param" do
35
- mock_app do
36
- use Rack::Protection::AuthenticityToken, :authenticity_param => 'csrf_param'
37
- run proc { |e| [200, {'Content-Type' => 'text/plain'}, ['hi']] }
38
- end
39
-
40
- post('/', {"csrf_param" => "a"}, 'rack.session' => {:csrf => "a"})
41
- last_response.should be_ok
42
- end
43
-
44
- it "sets a new csrf token for the session in env, even after a 'safe' request" do
45
- get('/', {}, {})
46
- env['rack.session'][:csrf].should_not be_nil
47
- end
48
- end
@@ -1,40 +0,0 @@
1
- require File.expand_path('../spec_helper.rb', __FILE__)
2
-
3
- describe Rack::Protection::Base do
4
-
5
- subject { described_class.new(lambda {}) }
6
-
7
- describe "#random_string" do
8
- it "outputs a string of 32 characters" do
9
- subject.random_string.length.should == 32
10
- end
11
- end
12
-
13
- describe "#referrer" do
14
- it "Reads referrer from Referer header" do
15
- env = {"HTTP_HOST" => "foo.com", "HTTP_REFERER" => "http://bar.com/valid"}
16
- subject.referrer(env).should == "bar.com"
17
- end
18
-
19
- it "Reads referrer from Host header when Referer header is relative" do
20
- env = {"HTTP_HOST" => "foo.com", "HTTP_REFERER" => "/valid"}
21
- subject.referrer(env).should == "foo.com"
22
- end
23
-
24
- it "Reads referrer from Host header when Referer header is missing" do
25
- env = {"HTTP_HOST" => "foo.com"}
26
- subject.referrer(env).should == "foo.com"
27
- end
28
-
29
- it "Returns nil when Referer header is missing and allow_empty_referrer is false" do
30
- env = {"HTTP_HOST" => "foo.com"}
31
- subject.options[:allow_empty_referrer] = false
32
- subject.referrer(env).should be_nil
33
- end
34
-
35
- it "Returns nil when Referer header is invalid" do
36
- env = {"HTTP_HOST" => "foo.com", "HTTP_REFERER" => "http://bar.com/bad|uri"}
37
- subject.referrer(env).should be_nil
38
- end
39
- end
40
- end
@@ -1,43 +0,0 @@
1
- require File.expand_path('../spec_helper.rb', __FILE__)
2
-
3
- describe Rack::Protection::EscapedParams do
4
- it_behaves_like "any rack application"
5
-
6
- context 'escaping' do
7
- it 'escapes html entities' do
8
- mock_app do |env|
9
- request = Rack::Request.new(env)
10
- [200, {'Content-Type' => 'text/plain'}, [request.params['foo']]]
11
- end
12
- get '/', :foo => "<bar>"
13
- body.should == '&lt;bar&gt;'
14
- end
15
-
16
- it 'leaves normal params untouched' do
17
- mock_app do |env|
18
- request = Rack::Request.new(env)
19
- [200, {'Content-Type' => 'text/plain'}, [request.params['foo']]]
20
- end
21
- get '/', :foo => "bar"
22
- body.should == 'bar'
23
- end
24
-
25
- it 'copes with nested arrays' do
26
- mock_app do |env|
27
- request = Rack::Request.new(env)
28
- [200, {'Content-Type' => 'text/plain'}, [request.params['foo']['bar']]]
29
- end
30
- get '/', :foo => {:bar => "<bar>"}
31
- body.should == '&lt;bar&gt;'
32
- end
33
-
34
- it 'leaves cache-breaker params untouched' do
35
- mock_app do |env|
36
- [200, {'Content-Type' => 'text/plain'}, ['hi']]
37
- end
38
-
39
- get '/?95df8d9bf5237ad08df3115ee74dcb10'
40
- body.should == 'hi'
41
- end
42
- end
43
- end
@@ -1,33 +0,0 @@
1
- require File.expand_path('../spec_helper.rb', __FILE__)
2
-
3
- describe Rack::Protection::FormToken do
4
- it_behaves_like "any rack application"
5
-
6
- it "denies post requests without any token" do
7
- post('/').should_not be_ok
8
- end
9
-
10
- it "accepts post requests with correct X-CSRF-Token header" do
11
- post('/', {}, 'rack.session' => {:csrf => "a"}, 'HTTP_X_CSRF_TOKEN' => "a")
12
- last_response.should be_ok
13
- end
14
-
15
- it "denies post requests with wrong X-CSRF-Token header" do
16
- post('/', {}, 'rack.session' => {:csrf => "a"}, 'HTTP_X_CSRF_TOKEN' => "b")
17
- last_response.should_not be_ok
18
- end
19
-
20
- it "accepts post form requests with correct authenticity_token field" do
21
- post('/', {"authenticity_token" => "a"}, 'rack.session' => {:csrf => "a"})
22
- last_response.should be_ok
23
- end
24
-
25
- it "denies post form requests with wrong authenticity_token field" do
26
- post('/', {"authenticity_token" => "a"}, 'rack.session' => {:csrf => "b"})
27
- last_response.should_not be_ok
28
- end
29
-
30
- it "accepts ajax requests without a valid token" do
31
- post('/', {}, "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest").should be_ok
32
- end
33
- end