mój kod konfiguracjiSinatra/1.4.3 Zastosowanie Rack :: Session :: Cookie ostrzeżenie
require 'sinatra'
#set :environment, :production
enable :sessions
enable :logging
set run: true
case
when production?
set port: 8081
when development?
require 'sinatra/reloader'
require 'better_errors'
use BetterErrors::Middleware
BetterErrors.application_root = __dir__
end
use Rack::Session::Cookie, key: 'N&wedhSDF',
domain: "localhost",
path: '/',
expire_after: 14400,
secret: '*&(^B234'
get '/' do
erb :hello
end
nadal pokazuje ostrzeżenie:
SECURITY WARNING: No secret option provided to Rack::Session::Cookie.
This poses a security threat. It is strongly recommended that you
provide a secret to prevent exploits that may be possible from crafted
cookies. This will not be supported in future versions of Rack, and
future versions will even invalidate your existing user cookies.
ale nie pojawi się na produkcji
Pytanie brzmi, dlaczego nadal wyświetla ostrzeżenie, nawet jeśli zestaw Rack :: Session :: Cookie jest już ustawiony?
może Pan wyjaśnić, co ustawienie '' session_secret'' robi: zamiast
enable :sessions
to zrobić? Szukałem odpowiedzi, ale nigdzie jej nie mogę znaleźć. Domyślam się, że używa go jako soli do haszyszu, aby ludzie nie mogli fałszować ciasteczek. – Piccolo@Piccolo Tak, ma to na celu uniemożliwienie ludziom fałszowania plików cookie, ale jest on używany jako klucz w [HMAC] (https://en.wikipedia.org/wiki/Hash-based_message_authentication_code), a nie jako sól. Sprawdź [kod sesji Rack cookie] (https://github.com/rack/rack/1.6.4/lib/rack/session/cookie.rb), aby uzyskać więcej informacji. – matt
Dziękuję bardzo! Patrzę teraz na to. Czy istnieje jakiś powód, dla którego nie mogę wygenerować nowego tajnego klucza na początku mojej aplikacji? – Piccolo