代码之家  ›  专栏  ›  技术社区  ›  Tallboy

当secret_key_base为nil时手动解密rails 5会话?

  •  0
  • Tallboy  · 技术社区  · 7 年前

    我正在跟踪其他几个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 是零,这会导致这一步失败。我试过空的 '' 但这也失败了。

    我没有使用新的master_key方法,我仍然选择使用 秘钥库

    1 回复  |  直到 7 年前
        1
  •  0
  •   Israel    6 年前

    对于任何试图在rails 5.2中获得密钥库的人来说,我也遇到了同样的问题,经过一些研究,我使用了 Rails.application.secret_key_base .下面是一个github代码,显示如何解密。 https://gist.github.com/inopinatus/e523f36b468f94cf6d34410b73fef15e