add Gem rack_attack for prevent attack brute-force
This commit is contained in:
parent
cab5b5cd9b
commit
fc8cebd78d
4 changed files with 26 additions and 0 deletions
1
Gemfile
1
Gemfile
|
@ -48,6 +48,7 @@ gem 'prawn_rails'
|
||||||
gem 'premailer-rails'
|
gem 'premailer-rails'
|
||||||
gem 'puma' # Use Puma as the app server
|
gem 'puma' # Use Puma as the app server
|
||||||
gem 'pundit'
|
gem 'pundit'
|
||||||
|
gem 'rack-attack'
|
||||||
gem 'rack-mini-profiler'
|
gem 'rack-mini-profiler'
|
||||||
gem 'rails'
|
gem 'rails'
|
||||||
gem 'rails-i18n' # Locales par défaut
|
gem 'rails-i18n' # Locales par défaut
|
||||||
|
|
|
@ -434,6 +434,8 @@ GEM
|
||||||
pundit (2.0.1)
|
pundit (2.0.1)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
rack (2.0.6)
|
rack (2.0.6)
|
||||||
|
rack-attack (6.0.0)
|
||||||
|
rack (>= 1.0, < 3)
|
||||||
rack-mini-profiler (1.0.1)
|
rack-mini-profiler (1.0.1)
|
||||||
rack (>= 1.2.0)
|
rack (>= 1.2.0)
|
||||||
rack-oauth2 (1.9.3)
|
rack-oauth2 (1.9.3)
|
||||||
|
@ -752,6 +754,7 @@ DEPENDENCIES
|
||||||
pry-byebug
|
pry-byebug
|
||||||
puma
|
puma
|
||||||
pundit
|
pundit
|
||||||
|
rack-attack
|
||||||
rack-mini-profiler
|
rack-mini-profiler
|
||||||
rails
|
rails
|
||||||
rails-controller-testing
|
rails-controller-testing
|
||||||
|
|
|
@ -41,5 +41,6 @@ module TPS
|
||||||
end
|
end
|
||||||
|
|
||||||
config.ds_weekly_overview = ENV['APP_NAME'] == 'tps'
|
config.ds_weekly_overview = ENV['APP_NAME'] == 'tps'
|
||||||
|
config.middleware.use Rack::Attack
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
21
config/initializers/rack_attack.rb
Normal file
21
config/initializers/rack_attack.rb
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
if ENV['RAILS_ENV'] != 'test'
|
||||||
|
class Rack::Attack
|
||||||
|
throttle('logins/ip', limit: 5, period: 20.seconds) do |req|
|
||||||
|
if req.path == '/users/sign_in' && req.post?
|
||||||
|
req.ip
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
throttle('stats/ip', limit: 5, period: 20.seconds) do |req|
|
||||||
|
if req.path == '/stats'
|
||||||
|
req.ip
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
throttle('contact/ip', limit: 5, period: 20.seconds) do |req|
|
||||||
|
if req.path == '/contact' && req.post?
|
||||||
|
req.ip
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Reference in a new issue