diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb index f558ee5fe0..cabb996c5e 100644 --- a/config/initializers/rack_attack.rb +++ b/config/initializers/rack_attack.rb @@ -82,8 +82,16 @@ class Rack::Attack req.authenticated_user_id if req.post? && req.path.match?(%r{\A/api/v\d+/media\z}i) end - throttle('throttle_media_proxy', limit: 30, period: 10.minutes) do |req| - req.throttleable_remote_ip if req.path.start_with?('/media_proxy') + throttle('throttle_media_proxy_authenticated', limit: 200, period: 10.minutes) do |req| + if req.path.start_with?('/media_proxy') && (req.authenticated_user_id || req.warden_user_id) + req.authenticated_user_id || req.warden_user_id + end + end + + throttle('throttle_media_proxy_unauthenticated', limit: 30, period: 1.hour) do |req| + if req.path.start_with?('/media_proxy') && !req.authenticated_user_id && !req.warden_user_id + req.throttleable_remote_ip + end end throttle('throttle_api_sign_up', limit: 5, period: 30.minutes) do |req|