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)
private
def https_enabled?
- Rails.env.production? && !request.path.start_with?('/health')
+ Rails.env.production? && !request.path.start_with?('/health') && !request.headers["Host"].ends_with?(".onion")
end
def authorized_fetch_mode?
end
def standard_url
- "https://#{@domain}/.well-known/webfinger?resource=#{@uri}"
+ if @domain.ends_with? ".onion"
+ "http://#{@domain}/.well-known/webfinger?resource=#{@uri}"
+ else
+ "https://#{@domain}/.well-known/webfinger?resource=#{@uri}"
+ end
end
def host_meta_url
- "https://#{@domain}/.well-known/host-meta"
+ if @domain.ends_with? ".onion"
+ "http://#{@domain}/.well-known/host-meta"
+ else
+ "https://#{@domain}/.well-known/host-meta"
+ end
end
end
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,
}