我是新來的web應用程序開發&剛剛開始學習Sinatra框架。我目前正在開發一個登錄系統。 這裏是必要的代碼:每個請求都改變Cookie,使用sinatra和Rack :: Session :: EncryptedCookie
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的內容正在改變,即使會話內容根本沒有改變。謝謝您的回覆。 :-) – Rahul