bot-away 2.0.0 → 2.0.1
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.
- data/.travis.yml +6 -2
- data/History.txt +6 -0
- data/gemfiles/Gemfile.rails-3.1.1 +8 -0
- data/gemfiles/Gemfile.rails-3.1.1.lock +131 -0
- data/gemfiles/Gemfile.rails-3.2.x +8 -0
- data/gemfiles/Gemfile.rails-3.2.x.lock +129 -0
- data/lib/bot-away.rb +1 -1
- data/lib/bot-away/middleware.rb +18 -0
- data/lib/bot-away/railtie.rb +4 -0
- data/lib/bot-away/version.rb +1 -1
- data/spec/integration/get_with_params_spec.rb +13 -0
- data/spec/integration/put_with_params_spec.rb +49 -0
- data/spec/spec_helper.rb +6 -2
- data/spec/test_rails_app/app/controllers/tests_controller.rb +1 -1
- data/spec/test_rails_app/app/models/post.rb +8 -0
- data/spec/test_rails_app/app/views/tests/model_form.html.erb +3 -1
- metadata +17 -9
- data/lib/bot-away/action_dispatch/params_parser.rb +0 -22
data/.travis.yml
CHANGED
|
@@ -3,12 +3,16 @@ rvm:
|
|
|
3
3
|
- 1.9.2
|
|
4
4
|
- 1.9.3
|
|
5
5
|
- ree
|
|
6
|
-
|
|
6
|
+
# rails 3.2 doesn't build on these right now
|
|
7
|
+
# TODO enable again when rails 3.2 works
|
|
8
|
+
# - jruby
|
|
9
|
+
# - rbx-2.0
|
|
7
10
|
- ruby-head
|
|
8
|
-
- rbx-2.0
|
|
9
11
|
|
|
10
12
|
gemfile:
|
|
11
13
|
# No longer developing against Rails 2.3
|
|
12
14
|
# - gemfiles/Gemfile.rails-2.3.x
|
|
13
15
|
- gemfiles/Gemfile.rails-3.0.x
|
|
14
16
|
- gemfiles/Gemfile.rails-3.1.x
|
|
17
|
+
- gemfiles/Gemfile.rails-3.1.1
|
|
18
|
+
- gemfiles/Gemfile.rails-3.2.x
|
data/History.txt
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
=== 2.0.1 2012-01-20
|
|
2
|
+
* Bugfix
|
|
3
|
+
* Params always emty (#2). In certain situations, BotAway would prefill the request.parameters hash and this
|
|
4
|
+
was conflicting with Rails because once the parameters hash exists, Rails won't add path parameters (such
|
|
5
|
+
as :id) to it. Now, BotAway checks request.POST directly so that Rails can fill request.parameters as usual.
|
|
6
|
+
|
|
1
7
|
=== 2.0.0 2012-01-13
|
|
2
8
|
* Bumped major version number to signify that the version for Rails v2.x is no longer under active development.
|
|
3
9
|
Use v1.2.x under Rails 2. BotAway now officially supports only Rails 3.0.x and up.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: /Users/colin/projects/gems/bot-away
|
|
3
|
+
specs:
|
|
4
|
+
bot-away (2.0.0)
|
|
5
|
+
actionpack (>= 2.3.5)
|
|
6
|
+
|
|
7
|
+
GEM
|
|
8
|
+
remote: http://rubygems.org/
|
|
9
|
+
specs:
|
|
10
|
+
actionmailer (3.1.1)
|
|
11
|
+
actionpack (= 3.1.1)
|
|
12
|
+
mail (~> 2.3.0)
|
|
13
|
+
actionpack (3.1.1)
|
|
14
|
+
activemodel (= 3.1.1)
|
|
15
|
+
activesupport (= 3.1.1)
|
|
16
|
+
builder (~> 3.0.0)
|
|
17
|
+
erubis (~> 2.7.0)
|
|
18
|
+
i18n (~> 0.6)
|
|
19
|
+
rack (~> 1.3.2)
|
|
20
|
+
rack-cache (~> 1.1)
|
|
21
|
+
rack-mount (~> 0.8.2)
|
|
22
|
+
rack-test (~> 0.6.1)
|
|
23
|
+
sprockets (~> 2.0.2)
|
|
24
|
+
activemodel (3.1.1)
|
|
25
|
+
activesupport (= 3.1.1)
|
|
26
|
+
builder (~> 3.0.0)
|
|
27
|
+
i18n (~> 0.6)
|
|
28
|
+
activerecord (3.1.1)
|
|
29
|
+
activemodel (= 3.1.1)
|
|
30
|
+
activesupport (= 3.1.1)
|
|
31
|
+
arel (~> 2.2.1)
|
|
32
|
+
tzinfo (~> 0.3.29)
|
|
33
|
+
activeresource (3.1.1)
|
|
34
|
+
activemodel (= 3.1.1)
|
|
35
|
+
activesupport (= 3.1.1)
|
|
36
|
+
activesupport (3.1.1)
|
|
37
|
+
multi_json (~> 1.0)
|
|
38
|
+
arel (2.2.1)
|
|
39
|
+
builder (3.0.0)
|
|
40
|
+
capybara (1.1.2)
|
|
41
|
+
mime-types (>= 1.16)
|
|
42
|
+
nokogiri (>= 1.3.3)
|
|
43
|
+
rack (>= 1.0.0)
|
|
44
|
+
rack-test (>= 0.5.4)
|
|
45
|
+
selenium-webdriver (~> 2.0)
|
|
46
|
+
xpath (~> 0.1.4)
|
|
47
|
+
childprocess (0.3.0)
|
|
48
|
+
ffi (~> 1.0.6)
|
|
49
|
+
diff-lcs (1.1.3)
|
|
50
|
+
erubis (2.7.0)
|
|
51
|
+
ffi (1.0.11)
|
|
52
|
+
hike (1.2.1)
|
|
53
|
+
i18n (0.6.0)
|
|
54
|
+
json (1.6.5)
|
|
55
|
+
mail (2.3.0)
|
|
56
|
+
i18n (>= 0.4.0)
|
|
57
|
+
mime-types (~> 1.16)
|
|
58
|
+
treetop (~> 1.4.8)
|
|
59
|
+
mime-types (1.17.2)
|
|
60
|
+
multi_json (1.0.4)
|
|
61
|
+
nokogiri (1.5.0)
|
|
62
|
+
polyglot (0.3.3)
|
|
63
|
+
rack (1.3.6)
|
|
64
|
+
rack-cache (1.1)
|
|
65
|
+
rack (>= 0.4)
|
|
66
|
+
rack-mount (0.8.3)
|
|
67
|
+
rack (>= 1.0.0)
|
|
68
|
+
rack-ssl (1.3.2)
|
|
69
|
+
rack
|
|
70
|
+
rack-test (0.6.1)
|
|
71
|
+
rack (>= 1.0)
|
|
72
|
+
rails (3.1.1)
|
|
73
|
+
actionmailer (= 3.1.1)
|
|
74
|
+
actionpack (= 3.1.1)
|
|
75
|
+
activerecord (= 3.1.1)
|
|
76
|
+
activeresource (= 3.1.1)
|
|
77
|
+
activesupport (= 3.1.1)
|
|
78
|
+
bundler (~> 1.0)
|
|
79
|
+
railties (= 3.1.1)
|
|
80
|
+
railties (3.1.1)
|
|
81
|
+
actionpack (= 3.1.1)
|
|
82
|
+
activesupport (= 3.1.1)
|
|
83
|
+
rack-ssl (~> 1.3.2)
|
|
84
|
+
rake (>= 0.8.7)
|
|
85
|
+
rdoc (~> 3.4)
|
|
86
|
+
thor (~> 0.14.6)
|
|
87
|
+
rake (0.9.2.2)
|
|
88
|
+
rdoc (3.12)
|
|
89
|
+
json (~> 1.4)
|
|
90
|
+
rspec (2.6.0)
|
|
91
|
+
rspec-core (~> 2.6.0)
|
|
92
|
+
rspec-expectations (~> 2.6.0)
|
|
93
|
+
rspec-mocks (~> 2.6.0)
|
|
94
|
+
rspec-core (2.6.4)
|
|
95
|
+
rspec-expectations (2.6.0)
|
|
96
|
+
diff-lcs (~> 1.1.2)
|
|
97
|
+
rspec-mocks (2.6.0)
|
|
98
|
+
rspec-rails (2.6.1)
|
|
99
|
+
actionpack (~> 3.0)
|
|
100
|
+
activesupport (~> 3.0)
|
|
101
|
+
railties (~> 3.0)
|
|
102
|
+
rspec (~> 2.6.0)
|
|
103
|
+
rubyzip (0.9.5)
|
|
104
|
+
selenium-webdriver (2.17.0)
|
|
105
|
+
childprocess (>= 0.2.5)
|
|
106
|
+
ffi (~> 1.0.9)
|
|
107
|
+
multi_json (~> 1.0.4)
|
|
108
|
+
rubyzip
|
|
109
|
+
sprockets (2.0.3)
|
|
110
|
+
hike (~> 1.2)
|
|
111
|
+
rack (~> 1.0)
|
|
112
|
+
tilt (~> 1.1, != 1.3.0)
|
|
113
|
+
thor (0.14.6)
|
|
114
|
+
tilt (1.3.3)
|
|
115
|
+
treetop (1.4.10)
|
|
116
|
+
polyglot
|
|
117
|
+
polyglot (>= 0.3.1)
|
|
118
|
+
tzinfo (0.3.31)
|
|
119
|
+
xpath (0.1.4)
|
|
120
|
+
nokogiri (~> 1.3)
|
|
121
|
+
|
|
122
|
+
PLATFORMS
|
|
123
|
+
ruby
|
|
124
|
+
|
|
125
|
+
DEPENDENCIES
|
|
126
|
+
bot-away!
|
|
127
|
+
capybara (~> 1.1.2)
|
|
128
|
+
rails (= 3.1.1)
|
|
129
|
+
rake (~> 0.9.2)
|
|
130
|
+
rspec (~> 2.6.0)
|
|
131
|
+
rspec-rails (~> 2.6.1)
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: /Users/colin/projects/gems/bot-away
|
|
3
|
+
specs:
|
|
4
|
+
bot-away (2.0.0)
|
|
5
|
+
actionpack (>= 2.3.5)
|
|
6
|
+
|
|
7
|
+
GEM
|
|
8
|
+
remote: http://rubygems.org/
|
|
9
|
+
specs:
|
|
10
|
+
actionmailer (3.2.0.rc2)
|
|
11
|
+
actionpack (= 3.2.0.rc2)
|
|
12
|
+
mail (~> 2.3.0)
|
|
13
|
+
actionpack (3.2.0.rc2)
|
|
14
|
+
activemodel (= 3.2.0.rc2)
|
|
15
|
+
activesupport (= 3.2.0.rc2)
|
|
16
|
+
builder (~> 3.0.0)
|
|
17
|
+
erubis (~> 2.7.0)
|
|
18
|
+
journey (~> 1.0.0.rc1)
|
|
19
|
+
rack (~> 1.4.0)
|
|
20
|
+
rack-cache (~> 1.1)
|
|
21
|
+
rack-test (~> 0.6.1)
|
|
22
|
+
sprockets (~> 2.1.2)
|
|
23
|
+
activemodel (3.2.0.rc2)
|
|
24
|
+
activesupport (= 3.2.0.rc2)
|
|
25
|
+
builder (~> 3.0.0)
|
|
26
|
+
activerecord (3.2.0.rc2)
|
|
27
|
+
activemodel (= 3.2.0.rc2)
|
|
28
|
+
activesupport (= 3.2.0.rc2)
|
|
29
|
+
arel (~> 3.0.0.rc1)
|
|
30
|
+
tzinfo (~> 0.3.29)
|
|
31
|
+
activeresource (3.2.0.rc2)
|
|
32
|
+
activemodel (= 3.2.0.rc2)
|
|
33
|
+
activesupport (= 3.2.0.rc2)
|
|
34
|
+
activesupport (3.2.0.rc2)
|
|
35
|
+
i18n (~> 0.6)
|
|
36
|
+
multi_json (~> 1.0)
|
|
37
|
+
arel (3.0.0)
|
|
38
|
+
builder (3.0.0)
|
|
39
|
+
capybara (1.1.2)
|
|
40
|
+
mime-types (>= 1.16)
|
|
41
|
+
nokogiri (>= 1.3.3)
|
|
42
|
+
rack (>= 1.0.0)
|
|
43
|
+
rack-test (>= 0.5.4)
|
|
44
|
+
selenium-webdriver (~> 2.0)
|
|
45
|
+
xpath (~> 0.1.4)
|
|
46
|
+
childprocess (0.3.0)
|
|
47
|
+
ffi (~> 1.0.6)
|
|
48
|
+
diff-lcs (1.1.3)
|
|
49
|
+
erubis (2.7.0)
|
|
50
|
+
ffi (1.0.11)
|
|
51
|
+
hike (1.2.1)
|
|
52
|
+
i18n (0.6.0)
|
|
53
|
+
journey (1.0.0)
|
|
54
|
+
json (1.6.5)
|
|
55
|
+
mail (2.3.0)
|
|
56
|
+
i18n (>= 0.4.0)
|
|
57
|
+
mime-types (~> 1.16)
|
|
58
|
+
treetop (~> 1.4.8)
|
|
59
|
+
mime-types (1.17.2)
|
|
60
|
+
multi_json (1.0.4)
|
|
61
|
+
nokogiri (1.5.0)
|
|
62
|
+
polyglot (0.3.3)
|
|
63
|
+
rack (1.4.0)
|
|
64
|
+
rack-cache (1.1)
|
|
65
|
+
rack (>= 0.4)
|
|
66
|
+
rack-ssl (1.3.2)
|
|
67
|
+
rack
|
|
68
|
+
rack-test (0.6.1)
|
|
69
|
+
rack (>= 1.0)
|
|
70
|
+
rails (3.2.0.rc2)
|
|
71
|
+
actionmailer (= 3.2.0.rc2)
|
|
72
|
+
actionpack (= 3.2.0.rc2)
|
|
73
|
+
activerecord (= 3.2.0.rc2)
|
|
74
|
+
activeresource (= 3.2.0.rc2)
|
|
75
|
+
activesupport (= 3.2.0.rc2)
|
|
76
|
+
bundler (~> 1.0)
|
|
77
|
+
railties (= 3.2.0.rc2)
|
|
78
|
+
railties (3.2.0.rc2)
|
|
79
|
+
actionpack (= 3.2.0.rc2)
|
|
80
|
+
activesupport (= 3.2.0.rc2)
|
|
81
|
+
rack-ssl (~> 1.3.2)
|
|
82
|
+
rake (>= 0.8.7)
|
|
83
|
+
rdoc (~> 3.4)
|
|
84
|
+
thor (~> 0.14.6)
|
|
85
|
+
rake (0.9.2.2)
|
|
86
|
+
rdoc (3.12)
|
|
87
|
+
json (~> 1.4)
|
|
88
|
+
rspec (2.6.0)
|
|
89
|
+
rspec-core (~> 2.6.0)
|
|
90
|
+
rspec-expectations (~> 2.6.0)
|
|
91
|
+
rspec-mocks (~> 2.6.0)
|
|
92
|
+
rspec-core (2.6.4)
|
|
93
|
+
rspec-expectations (2.6.0)
|
|
94
|
+
diff-lcs (~> 1.1.2)
|
|
95
|
+
rspec-mocks (2.6.0)
|
|
96
|
+
rspec-rails (2.6.1)
|
|
97
|
+
actionpack (~> 3.0)
|
|
98
|
+
activesupport (~> 3.0)
|
|
99
|
+
railties (~> 3.0)
|
|
100
|
+
rspec (~> 2.6.0)
|
|
101
|
+
rubyzip (0.9.5)
|
|
102
|
+
selenium-webdriver (2.17.0)
|
|
103
|
+
childprocess (>= 0.2.5)
|
|
104
|
+
ffi (~> 1.0.9)
|
|
105
|
+
multi_json (~> 1.0.4)
|
|
106
|
+
rubyzip
|
|
107
|
+
sprockets (2.1.2)
|
|
108
|
+
hike (~> 1.2)
|
|
109
|
+
rack (~> 1.0)
|
|
110
|
+
tilt (~> 1.1, != 1.3.0)
|
|
111
|
+
thor (0.14.6)
|
|
112
|
+
tilt (1.3.3)
|
|
113
|
+
treetop (1.4.10)
|
|
114
|
+
polyglot
|
|
115
|
+
polyglot (>= 0.3.1)
|
|
116
|
+
tzinfo (0.3.31)
|
|
117
|
+
xpath (0.1.4)
|
|
118
|
+
nokogiri (~> 1.3)
|
|
119
|
+
|
|
120
|
+
PLATFORMS
|
|
121
|
+
ruby
|
|
122
|
+
|
|
123
|
+
DEPENDENCIES
|
|
124
|
+
bot-away!
|
|
125
|
+
capybara (~> 1.1.2)
|
|
126
|
+
rails (~> 3.2.0.rc2)
|
|
127
|
+
rake (~> 0.9.2)
|
|
128
|
+
rspec (~> 2.6.0)
|
|
129
|
+
rspec-rails (~> 2.6.1)
|
data/lib/bot-away.rb
CHANGED
|
@@ -2,7 +2,7 @@ require 'action_controller'
|
|
|
2
2
|
require 'action_view'
|
|
3
3
|
|
|
4
4
|
require 'bot-away/param_parser'
|
|
5
|
-
require 'bot-away/
|
|
5
|
+
require 'bot-away/middleware'
|
|
6
6
|
require 'bot-away/action_view/helpers/instance_tag'
|
|
7
7
|
require 'bot-away/spinner'
|
|
8
8
|
require 'bot-away/version'
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module BotAway
|
|
2
|
+
class Middleware
|
|
3
|
+
def initialize(app)
|
|
4
|
+
@app = app
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def call(env)
|
|
8
|
+
request = ActionDispatch::Request.new(env)
|
|
9
|
+
|
|
10
|
+
# ignore GET params
|
|
11
|
+
unless (post = request.POST).empty?
|
|
12
|
+
post.merge! BotAway::ParamParser.new(request.ip, post).params
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
@app.call env
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/bot-away/railtie.rb
CHANGED
data/lib/bot-away/version.rb
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "GET params" do
|
|
4
|
+
before do
|
|
5
|
+
visit '/tests/proc_form/1?one=1'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should show the params" do
|
|
9
|
+
page.body.should match(/id: ['"]1["']/)
|
|
10
|
+
page.body.should match(/one: ['"]1["']/)
|
|
11
|
+
page.should_not have_content("suspected_bot")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "PUT params" do
|
|
4
|
+
before do
|
|
5
|
+
visit '/tests/model_form/1'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
describe "filling in a honeypot" do
|
|
9
|
+
before do
|
|
10
|
+
fill_in 'post[subject]', :with => "this is a subject"
|
|
11
|
+
click_button 'submit'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should be considered a bot" do
|
|
15
|
+
page.should have_content('suspected_bot')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should not include legit params" do
|
|
19
|
+
page.should_not have_content("subject:")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should drop data from the honeypots" do
|
|
23
|
+
page.should_not have_content("this is a subject")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should drop the hidden value" do
|
|
27
|
+
page.should_not have_content('hidden_value')
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe "filling in a legit field" do
|
|
32
|
+
before do
|
|
33
|
+
fill_in '00a1168ac1379bdbe9b59e678fe486b1', :with => "this is a subject"
|
|
34
|
+
click_button 'submit'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should include the hidden value" do
|
|
38
|
+
page.should have_content('hidden_value')
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should have kept legit data" do
|
|
42
|
+
page.should have_content('this is a subject')
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should not be considered a bot" do
|
|
46
|
+
page.should_not have_content('suspected_bot')
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -5,12 +5,15 @@ Bundler.setup
|
|
|
5
5
|
ENV['RAILS_ENV'] = 'development'
|
|
6
6
|
|
|
7
7
|
require 'rails'
|
|
8
|
-
require 'active_support
|
|
8
|
+
require 'active_support'
|
|
9
9
|
require 'action_controller/railtie'
|
|
10
10
|
require 'action_mailer/railtie'
|
|
11
11
|
require 'active_resource/railtie'
|
|
12
12
|
require 'bot-away'
|
|
13
13
|
|
|
14
|
+
# only for Rails 3.0.x
|
|
15
|
+
begin; require 'active_support/secure_random'; rescue LoadError; end
|
|
16
|
+
|
|
14
17
|
class BotAway::TestRailsApp < Rails::Application
|
|
15
18
|
base = File.expand_path("test_rails_app", File.dirname(__FILE__))
|
|
16
19
|
config.secret_token = "some secret phrase of at least 30 characters" * 30
|
|
@@ -22,10 +25,11 @@ class BotAway::TestRailsApp < Rails::Application
|
|
|
22
25
|
config.paths.app.views = File.join(base, 'app/views')
|
|
23
26
|
config.paths.config.locales = File.join(base, 'config/locales/bot-away-overrides.yml')
|
|
24
27
|
end
|
|
28
|
+
config.action_dispatch.show_exceptions = false
|
|
25
29
|
end
|
|
26
30
|
|
|
27
31
|
BotAway::TestRailsApp.initialize!
|
|
28
|
-
Rails.application.routes.draw { match '/:controller/:action' }
|
|
32
|
+
Rails.application.routes.draw { match '/:controller/:action(/:id)' }
|
|
29
33
|
Rails.application.routes.finalize!
|
|
30
34
|
Dir[File.expand_path('test_rails_app/**/*.rb', File.dirname(__FILE__))].each { |f| require f }
|
|
31
35
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bot-away
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.1
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-01-
|
|
12
|
+
date: 2012-01-20 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: actionpack
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &2153647860 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: 2.3.5
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *2153647860
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: rake
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &2153647140 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ~>
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: 0.9.2
|
|
33
33
|
type: :development
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *2153647140
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: capybara
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &2153646660 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ~>
|
|
@@ -43,7 +43,7 @@ dependencies:
|
|
|
43
43
|
version: 1.1.2
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *2153646660
|
|
47
47
|
description: Unobtrusively detects form submissions made by spambots, and silently
|
|
48
48
|
drops those submissions.
|
|
49
49
|
email:
|
|
@@ -64,11 +64,15 @@ files:
|
|
|
64
64
|
- bot-away.gemspec
|
|
65
65
|
- gemfiles/Gemfile.rails-3.0.x
|
|
66
66
|
- gemfiles/Gemfile.rails-3.0.x.lock
|
|
67
|
+
- gemfiles/Gemfile.rails-3.1.1
|
|
68
|
+
- gemfiles/Gemfile.rails-3.1.1.lock
|
|
67
69
|
- gemfiles/Gemfile.rails-3.1.x
|
|
68
70
|
- gemfiles/Gemfile.rails-3.1.x.lock
|
|
71
|
+
- gemfiles/Gemfile.rails-3.2.x
|
|
72
|
+
- gemfiles/Gemfile.rails-3.2.x.lock
|
|
69
73
|
- lib/bot-away.rb
|
|
70
|
-
- lib/bot-away/action_dispatch/params_parser.rb
|
|
71
74
|
- lib/bot-away/action_view/helpers/instance_tag.rb
|
|
75
|
+
- lib/bot-away/middleware.rb
|
|
72
76
|
- lib/bot-away/param_parser.rb
|
|
73
77
|
- lib/bot-away/railtie.rb
|
|
74
78
|
- lib/bot-away/spinner.rb
|
|
@@ -86,7 +90,9 @@ files:
|
|
|
86
90
|
- script/generate
|
|
87
91
|
- spec/controllers/basic_form_view_spec.rb
|
|
88
92
|
- spec/controllers/tests_controller_spec.rb
|
|
93
|
+
- spec/integration/get_with_params_spec.rb
|
|
89
94
|
- spec/integration/params_post_spec.rb
|
|
95
|
+
- spec/integration/put_with_params_spec.rb
|
|
90
96
|
- spec/lib/action_view/helpers/instance_tag_spec.rb
|
|
91
97
|
- spec/lib/action_view/param_parser_spec.rb
|
|
92
98
|
- spec/spec_helper.rb
|
|
@@ -124,7 +130,9 @@ summary: Unobtrusively detects form submissions made by spambots, and silently d
|
|
|
124
130
|
test_files:
|
|
125
131
|
- spec/controllers/basic_form_view_spec.rb
|
|
126
132
|
- spec/controllers/tests_controller_spec.rb
|
|
133
|
+
- spec/integration/get_with_params_spec.rb
|
|
127
134
|
- spec/integration/params_post_spec.rb
|
|
135
|
+
- spec/integration/put_with_params_spec.rb
|
|
128
136
|
- spec/lib/action_view/helpers/instance_tag_spec.rb
|
|
129
137
|
- spec/lib/action_view/param_parser_spec.rb
|
|
130
138
|
- spec/spec_helper.rb
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
require 'action_dispatch/middleware/params_parser'
|
|
2
|
-
|
|
3
|
-
# We're overriding ActionDispatch::ParamsParser
|
|
4
|
-
# instead of just attaching a custom param parser so that others' custom param parsers can do
|
|
5
|
-
# their jobs without conflict. Also, overriding the parser allows us to deobfuscate all params,
|
|
6
|
-
# not just the ones I'm smart enough to predict will be used.
|
|
7
|
-
class ActionDispatch::ParamsParser
|
|
8
|
-
def parse_formatted_parameters_with_deobfuscation(env)
|
|
9
|
-
request = ActionDispatch::Request.new(env)
|
|
10
|
-
params = parse_formatted_parameters_without_deobfuscation(env)
|
|
11
|
-
if params
|
|
12
|
-
BotAway::ParamParser.new(request.ip, params).params
|
|
13
|
-
else
|
|
14
|
-
request_parameters = request.parameters.dup
|
|
15
|
-
request.parameters.clear
|
|
16
|
-
request.parameters.merge! BotAway::ParamParser.new(request.ip, request_parameters).params
|
|
17
|
-
params
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
alias_method_chain :parse_formatted_parameters, :deobfuscation
|
|
22
|
-
end
|