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.
- checksums.yaml +5 -5
- data/Gemfile +13 -0
- data/README.md +16 -2
- data/Rakefile +2 -5
- data/lib/rack/protection.rb +38 -24
- data/lib/rack/protection/authenticity_token.rb +104 -4
- data/lib/rack/protection/base.rb +2 -21
- data/lib/rack/protection/escaped_params.rb +2 -0
- data/lib/rack/protection/http_origin.rb +8 -0
- data/lib/rack/protection/json_csrf.rb +18 -2
- data/lib/rack/protection/path_traversal.rb +1 -4
- data/lib/rack/protection/version.rb +1 -12
- data/lib/rack/protection/xss_header.rb +1 -1
- data/rack-protection.gemspec +39 -69
- metadata +30 -61
- data/spec/authenticity_token_spec.rb +0 -48
- data/spec/base_spec.rb +0 -40
- data/spec/escaped_params_spec.rb +0 -43
- data/spec/form_token_spec.rb +0 -33
- data/spec/frame_options_spec.rb +0 -39
- data/spec/http_origin_spec.rb +0 -38
- data/spec/ip_spoofing_spec.rb +0 -35
- data/spec/json_csrf_spec.rb +0 -58
- data/spec/path_traversal_spec.rb +0 -41
- data/spec/protection_spec.rb +0 -105
- data/spec/remote_referrer_spec.rb +0 -31
- data/spec/remote_token_spec.rb +0 -42
- data/spec/session_hijacking_spec.rb +0 -55
- data/spec/spec_helper.rb +0 -163
- data/spec/xss_header_spec.rb +0 -56
data/rack-protection.gemspec
CHANGED
@@ -1,26 +1,39 @@
|
|
1
|
-
|
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 =
|
6
|
-
s.description = "
|
7
|
-
s.homepage = "http://github.com/
|
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
|
-
"
|
34
|
-
"
|
35
|
-
"
|
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
|
-
"
|
46
|
-
"
|
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
|
-
"
|
81
|
-
"
|
82
|
-
"lib/rack
|
83
|
-
"lib/rack/protection
|
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/
|
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
|
97
|
-
"
|
98
|
-
"
|
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", "~>
|
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:
|
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
|
-
-
|
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:
|
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:
|
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:
|
82
|
-
description:
|
87
|
+
version: 3.0.0
|
88
|
+
description: Protect against typical web attacks, works with all Rack apps, including
|
89
|
+
Rails.
|
83
90
|
email:
|
84
|
-
-
|
85
|
-
-
|
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
|
-
|
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:
|
135
|
+
version: 1.3.1
|
169
136
|
requirements: []
|
170
137
|
rubyforge_project:
|
171
|
-
rubygems_version: 2.
|
138
|
+
rubygems_version: 2.5.1
|
172
139
|
signing_key:
|
173
140
|
specification_version: 4
|
174
|
-
summary:
|
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
|
data/spec/base_spec.rb
DELETED
@@ -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
|
data/spec/escaped_params_spec.rb
DELETED
@@ -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 == '<bar>'
|
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 == '<bar>'
|
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
|
data/spec/form_token_spec.rb
DELETED
@@ -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
|