【发布时间】:2013-06-27 19:58:58
【问题描述】:
我是网络应用程序开发的新手,刚刚开始学习 Sinatra 框架。我目前正在开发一个登录系统。 这是必要的代码:
require 'sinatra'
require 'openssl'
require 'encrypted_cookie'
configure do
use Rack::Session::EncryptedCookie, :secret => "foo-bar-baz", :httponly => true
然后,如果他/她被授权,我会将用户名存储在会话中:
post '/' do
if authorize(params[:name], params[:password], params[:csrfkey])
session[:name] = params[:name]
end
end
cookie 是加密的。它还可以记住会话值。
但是在使用 Firebug 时,我注意到在每次请求(页面加载、刷新等)时,cookie 的内容都会发生变化,我的意思是完全改变了。似乎 Sinatra 在每次请求时都会发送新的 cookie。
以前,我使用的是enable :sessions,而 cookie 从未改变过。
所以我的问题是,在会话期间每次请求都更改 cookie 的内容是否正常?
发生这种情况是因为它是加密的吗?
我在网上搜索了高低,但我猜没有人遇到这个问题..
【问题讨论】:
-
是的,这很正常,实际上可以防止某些类型的会话劫持攻击,但我不知道
Rack::Session::EncryptedCookie具体在做什么,所以无法提供详细的答案。 -
哦,好的。我只是想知道为什么 cookie 的内容会发生变化,即使会话内容根本没有变化。感谢你的回复。 :-)
标签: ruby cookies sinatra session-cookies rack