Расшифровывать сеанс Rails 5 вручную, когда secret_key_base равен nil? - PullRequest
0 голосов
/ 01 июля 2018

Я следую нескольким другим темам SO о том, как вручную расшифровывать строку сеанса ...

cookie        = CGI::unescape(params[:session])
salt          = Rails.application.config.action_dispatch.encrypted_cookie_salt
signed_salt   = Rails.application.config.action_dispatch.encrypted_signed_cookie_salt
key_generator = ActiveSupport::KeyGenerator.new(Rails.application.secrets.secret_key_base, iterations: 1000)
secret        = key_generator.generate_key(salt)[0, ActiveSupport::MessageEncryptor.key_len]
sign_secret   = key_generator.generate_key(signed_salt)
encryptor     = ActiveSupport::MessageEncryptor.new(secret, sign_secret)

decrypted_session = encryptor.decrypt_and_verify(cookie)

Проблема в том, что в Rails 5.2 значение secret_key_base равно nil, что приводит к сбою этого шага. Я попробовал пустую строку '', но это также не помогло.

Я не использую новый метод master_key, я все еще решил использовать secret_key_base

1 Ответ

0 голосов
/ 17 октября 2018

Для любого, кто пытался получить базу секретного ключа в rails 5.2, у меня была такая же проблема, и после некоторых исследований я использовал Rails.application.secret_key_base. Вот код GitHub, показывающий, как осуществляется дешифрование. https://gist.github.com/inopinatus/e523f36b468f94cf6d34410b73fef15e

...