gem 'xorcist', '~> 1.1'
gem 'pluck_each', '~> 0.1.3'
-
-gem 'secure_headers', '~> 3.5'
scenic (1.5.4)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
- secure_headers (3.9.0)
- useragent
securecompare (1.0.0)
semantic_range (2.3.0)
sidekiq (6.1.3)
unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
uniform_notifier (1.13.2)
- useragent (0.16.10)
warden (1.2.9)
rack (>= 2.0.9)
webauthn (3.0.0.alpha1)
ruby-progressbar (~> 1.11)
sanitize (~> 5.2)
scenic (~> 1.5)
- secure_headers (~> 3.5)
sidekiq (~> 6.1)
sidekiq-bulk (~> 0.2.0)
sidekiq-scheduler (~> 3.0)
require_relative '../lib/chewy/strategy/custom_sidekiq'
require_relative '../lib/webpacker/manifest_extensions'
require_relative '../lib/webpacker/helper_extensions'
+require_relative '../lib/action_dispatch/cookie_jar_extensions'
require_relative '../lib/rails/engine_extensions'
Dotenv::Railtie.load
value: session_id,
expires: 1.year.from_now,
httponly: true,
+ secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
same_site: :lax,
}
end
value: warden.cookies.signed['_session_id'] || warden.raw_session['auth_id'],
expires: 1.year.from_now,
httponly: true,
+ secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
same_site: :lax,
}
else
# If true, extends the user's remember period when remembered via cookie.
# config.extend_remember_period = false
+ # Options to be passed to the created cookie. For instance, you can set
+ # secure: true in order to force SSL only cookies.
+ config.rememberable_options = { secure: true }
+
# ==> Configuration for :validatable
# Range for password length.
config.password_length = 8..72
Makara::Cookie::DEFAULT_OPTIONS[:same_site] = :lax
+Makara::Cookie::DEFAULT_OPTIONS[:secure] = Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'
+++ /dev/null
-SecureHeaders::Configuration.default do |config|
- config.cookies = {
- secure: true,
- httponly: true,
- samesite: {
- lax: true
- }
- }
- config.csp = SecureHeaders::OPT_OUT
-end
Rails.application.config.session_store :cookie_store, {
key: '_mastodon_session',
+ secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
same_site: :lax,
}
--- /dev/null
+# frozen_string_literal: true
+
+module ActionDispatch
+ module CookieJarExtensions
+ private
+
+ # Monkey-patch ActionDispatch to serve secure cookies to Tor Hidden Service
+ # users. Otherwise, ActionDispatch would drop the cookie over HTTP.
+ def write_cookie?(*)
+ request.headers['Host'].ends_with?('.onion') || super
+ end
+ end
+end
+
+ActionDispatch::Cookies::CookieJar.prepend(ActionDispatch::CookieJarExtensions)