diff options
author | George Claghorn <george@basecamp.com> | 2017-11-20 10:52:54 -0500 |
---|---|---|
committer | George Claghorn <george@basecamp.com> | 2017-11-20 10:54:46 -0500 |
commit | 2d20a7696a761b1840bc2fbe09a2fd4bff2a779f (patch) | |
tree | f3fc409d686bd97219147bb4ae14d93a0c5fdbf8 | |
parent | 951e2715b578e75a37b4cee914b9076df920cab4 (diff) | |
download | rails-2d20a7696a761b1840bc2fbe09a2fd4bff2a779f.tar.gz rails-2d20a7696a761b1840bc2fbe09a2fd4bff2a779f.tar.bz2 rails-2d20a7696a761b1840bc2fbe09a2fd4bff2a779f.zip |
Fix direct uploads to local service
Disable CSRF protection for ActiveStorage::DiskController#update. The local disk service is intended to imitate a third-party service like S3 or GCS, so we don't care where direct uploads originate: they’re authorized by signed tokens.
Closes #30290.
[Shinichi Maeshima & George Claghorn]
-rw-r--r-- | activestorage/app/controllers/active_storage/disk_controller.rb | 2 | ||||
-rw-r--r-- | activestorage/test/dummy/config/environments/test.rb | 3 | ||||
-rw-r--r-- | activestorage/test/test_helper.rb | 1 |
3 files changed, 6 insertions, 0 deletions
diff --git a/activestorage/app/controllers/active_storage/disk_controller.rb b/activestorage/app/controllers/active_storage/disk_controller.rb index a4fd427cb2..8caecfff49 100644 --- a/activestorage/app/controllers/active_storage/disk_controller.rb +++ b/activestorage/app/controllers/active_storage/disk_controller.rb @@ -5,6 +5,8 @@ # Always go through the BlobsController, or your own authenticated controller, rather than directly # to the service url. class ActiveStorage::DiskController < ActionController::Base + skip_forgery_protection + def show if key = decode_verified_key send_data disk_service.download(key), diff --git a/activestorage/test/dummy/config/environments/test.rb b/activestorage/test/dummy/config/environments/test.rb index ce0889e8ae..74a802d98c 100644 --- a/activestorage/test/dummy/config/environments/test.rb +++ b/activestorage/test/dummy/config/environments/test.rb @@ -30,6 +30,9 @@ Rails.application.configure do # Print deprecation notices to the stderr. config.active_support.deprecation = :stderr + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + # Raises error for missing translations # config.action_view.raise_on_missing_translations = true end diff --git a/activestorage/test/test_helper.rb b/activestorage/test/test_helper.rb index 55da781f2a..aaf1d452ea 100644 --- a/activestorage/test/test_helper.rb +++ b/activestorage/test/test_helper.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +ENV["RAILS_ENV"] ||= "test" require_relative "dummy/config/environment.rb" require "bundler/setup" |