您可以按照上述某些答案中的说明执行此操作(使用config/initializers/session_store.rb 文件中的secure 选项):
MyApp::Application.config.session_store :cookie_store, key: '_my_app_session',
secure: Rails.env.production?
这只会保护会话 cookie,但其他 cookie 将不安全。
如果您想默认保护 Rails 应用程序中的所有 cookie,您可以使用 secure_headers gem。只需将 secure_headers gem 添加到您的 Gemfile 中,bundle install gem 并使用以下内容创建一个 config/initializers/secure_headers.rb 文件:
SecureHeaders::Configuration.default do |config|
config.cookies = {
secure: true, # mark all cookies as "Secure"
}
end
默认情况下,这将使 Rails 应用中的所有 cookie 安全。
您还可以添加这些推荐配置并设置httponly 和samesite 选项:
SecureHeaders::Configuration.default do |config|
config.cookies = {
secure: true, # mark all cookies as "Secure"
httponly: true, # mark all cookies as "HttpOnly"
samesite: {
lax: true # mark all cookies as SameSite=lax
}
}
end