Rails5でcookieの中身を見る方法


環境

  • Rails 5.2.3
  • Ruby 2.6.3

必要な情報

  • cookieの値
  • secret_key_baseの値
  • encrypted_cookie_salt と encrypted_signed_cookie_salt はデフォルト値と想定
    • encrypted_cookie_salt (salt) = 'encrypted cookie'
    • encrypted_signed_cookie_salt (signed_salt) = 'signed encrypted cookie'

コマンド

def verify_and_decrypt_session_cookie(cookie, secret_key_base)
  cookie        = CGI::unescape(cookie)
  salt          = 'encrypted cookie'
  signed_salt   = 'signed encrypted cookie'
  key_generator = ActiveSupport::KeyGenerator.new(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, serializer: JSON)

  encryptor.decrypt_and_verify(cookie)
end

cookie = 'cookie value comes here'
secret_key_base = 'secret_key_base value comes here'
verify_and_decrypt_session_cookie(cookie, secret_key_base)

参考URL