Как настроить cook ie для защиты в Rails - PullRequest
0 голосов
/ 16 апреля 2020

В моем приложении на Rails я хочу защитить свои куки, но он не работает.

В настоящее время я включаю SSL в своем файле production.rb, но он не защищает файлы cookie, даже если это следует из того, что я прочитал.

Я на Rails 5+ и у меня нет файл session_store.rb, который я вижу в разных потоках. Я попытался сделать это, и мой повар ie все еще не обеспечен.

Я попытался добавить это:

Rails.application.config.session_store :cookie_store, key: '_application_session', secure: true, httponly: true

, но тогда я не вижу "второго" set-cook ie, когда я использую curl в своей консоли. Из-за этого, когда я захожу на свой веб-сайт, он перенаправляет меня в индекс без входа в систему.

У меня есть это в моем production.rb:

 config.force_ssl = true
 config.to_prepare { Devise::SessionsController.force_ssl }
 config.to_prepare { Devise::RegistrationsController.force_ssl }
 config.to_prepare { Devise::PasswordsController.force_ssl }

Как это исправить на рельсах 5+?

1 Ответ

0 голосов
/ 17 апреля 2020

Исправлено с использованием гема Securityheaders: https://github.com/github/secure_headers

Сделал инициализатор со следующим содержимым:

SecureHeaders::Configuration.default do |config|
    config.cookies = {
        secure: true, # mark all cookies as "Secure"
        httponly: true, # mark all cookies as "HttpOnly"
        samesite: {
            lax: true
        }
    }
    config.hsts = "max-age=#{1.week.to_i}"
    config.x_frame_options = "DENY"
    config.x_content_type_options = "nosniff"
    config.x_xss_protection = "1; mode=block"
    config.x_download_options = "noopen"
    config.x_permitted_cross_domain_policies = "none"
    config.referrer_policy = %w(origin-when-cross-origin strict-origin-when-cross-origin)
    config.csp = SecureHeaders::OPT_OUT
end

Остальное я только использовал предварительно встроенный csp, так как мне было слишком сложно делать это вручную с гемом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...