【发布时间】:2014-01-17 07:32:41
【问题描述】:
我希望为用户提供更持久的登录体验,因此我想将用户的 id 保存为 cookies.signed[:id] = user.id 而不是 session[:id] = user.id。
我应该注意此更改是否存在任何安全隐患(不同的加密等)?
【问题讨论】:
标签: ruby-on-rails authentication cookies ruby-on-rails-4 session-cookies
我希望为用户提供更持久的登录体验,因此我想将用户的 id 保存为 cookies.signed[:id] = user.id 而不是 session[:id] = user.id。
我应该注意此更改是否存在任何安全隐患(不同的加密等)?
【问题讨论】:
标签: ruby-on-rails authentication cookies ruby-on-rails-4 session-cookies
嗯,这是一个例子。让我们解决非常糟糕的场景。有人得到了你的应用程序签署 cookie 的秘密。因此,这些坏人将能够将他们想要的数据存储在 cookie 中。如果您将通过 cookie 中的 id 识别用户,他们将能够以系统中的任何用户身份登录。如何?好吧,大多数应用程序都使用以 0 开头的整数作为 id,对吧?很容易找到,例如 id 为 1 的管理员用户。如果您将通过会话识别用户怎么办?会话(就像 cookie)通常会过期。甚至更多 - 猜测管理员或其他人的会话 id 会很烦人(如果这些用户根本没有会话,甚至不可能)。我并不是说如果有人窃取了您的应用程序的秘密并且您仅将会话 ID 存储在 cookie 中,那么您是绝对安全的。但将用户 ID 存储在会话中肯定比将其存储在 cookie 中更好。
【讨论】: