ruby-on-rails - 给定 session key 和 secret ,我们如何解密 Rails cookies?

标签 ruby-on-rails ruby session encryption cookies

我有一个关于 Rails 如何处理 cookie 的问题 加密/解密。

我在我的 config/environment.rb 中有这个

  config.action_controller.session = {
    :session_key => [some key],
    :secret => [some secret]
  }

这在 config/environment/production.rb 等中:

  ActionController::Base.session_options[:session_domain] = [some
domain]

到目前为止,一切顺利——只要我所有的 Rails 应用程序都具有相同的 session_key 和 secret,在同一个域,都可以用 同样的 cookies 。

但是,一位同事现在有一个 JSP 应用程序(在同一域中), 他想用它来读取我设置的 cookie。

那么,给定一个 secret 和一个加密的 cookie 值,我们将如何解密 获取该 cookie 的内容?

(文档似乎表明这是默认的单向 SHA1 加密 -- http://caboo.se/doc/classes/CGI/Session/CookieStore.html - 但 那么我的 Rails 应用程序将如何读取 cookie 的内容 那是单向加密的?)

在此先感谢您提供任何提示/指示/见解,

最佳答案

如果您直接从应用数据库中存储的 session 数据中提取 session.data 字段(如果您在 environment.rb 文件中使用 active_record_store)

config.action_controller.session_store = :active_record_store

...这是解码它并返回哈希的方法:

Marshal.load(ActiveSupport::Base64.decode64(@session.data))

... 或在 Rails >= 3.2 中(感谢 Chuck Vose)

Marshal.load(Base64.decode64(@session.data))

它根本没有加密。

关于ruby-on-rails - 给定 session key 和 secret ,我们如何解密 Rails cookies?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941499/

相关文章:

ruby-on-rails - Ruby on Rails - 未定义方法 `persisted?' for nil :NilClass

javascript - rails : acts_as_commentable_with_threading children's comment form not working

ruby - `raise "foo "` and ` raise Exception.new ("foo")` 有什么区别?

ruby - Cucumber:如何实现功能目录特定的 support/hooks.rb 功能?

ruby-on-rails - Rails 3.1 引擎的 Assets

hibernate - 回滚是否终止 session ?

php - $_SESSION 与 Ajax

ruby-on-rails - 为什么 twitter-bootstrap-rails 生成的 View 使用 model_class.human_attribute_name(:column) instead of just a string?

ruby-on-rails - 如何在compoundjs Controller 中从json检索数据

php - 使用服务器端脚本启动 SESSION