2014-06-17 2 views
1

내가 암호화 내 쿠키에 포함 된 데이터를 보호하기 위해 노력하고있어하지만 그것은 단지 (64 기수)로 인코딩됩니다 데이터처럼 보인다레일 4

이 예입니다 안녕하세요 :

cookies.signed[:example] = { :value => 'can you see this?', :httponly => true, :expire_after => 30.minutes, :secure => true } 

그리고 이것은 쿠키의 내용입니다 :

BAhJIhZjYW4geW91IHNlZSB0aGlzPwY6BkVG--b4a8bbd7cd35e392ccd788df0008fd10b48442b2 

내가 (base64로)를 문자열을 디코딩하면 내가 얻을 :

,691,363

Service::Application.config.session_store :cookie_store, key: '_service_session' 

그리고 내 secret_token.rb에서 나는 이런 식으로 뭔가를 설정 : (210)

I"can you see this?:EFom{q{vq{_M<}to8f 
내가 누락 무엇인지 알고 싶습니다

, 현재이 내가

session_store.rb에있는 것입니다 : 당신이 잘, 다만 쿠키의 내용을 signes, 쿠키 항아리에 signed 방법을 사용했기 때문에

Service::Application.config.secret_key_base = 'e892d55cbc205bb6..' 

답변

3

귀하의 cookis은 암호화되지 않습니다.

허용 대답 오프 피기 백으로
cookies.encrypted[:discount] = 45 
# => Set-Cookie: discount=ZS9ZZ1R4cG1pcUJ1bm80anhQang3dz09LS1mbDZDSU5scGdOT3ltQ2dTdlhSdWpRPT0%3D--ab54663c9f4e3bc340c790d6d2b71e92f5b60315; path=/ 

cookies.encrypted[:discount] # => 45 
+0

니스, 감사합니다 –

1

:

상황에 따라 : 당신이 세션 쿠키의 경우 사용을 고려할 수

을 사용하여 encrypted 방법을 쿠키를 암호화하려면 당신은 암호화를 원한다. (답변에 따르면 쿠키를 암호화 할 수 있지만 세션 쿠키가 더 적합 할 수 있습니다.

기본적으로 레일 4에서는 세션 쿠키가 기본적으로 암호화되고 서명됩니다.

Relevant Rails Documentation.

특정 섹션 :

만 secret_token 경우 세트, 쿠키 서명했으나 암호화되지 않습니다. 이는 사용자가 앱의 비밀 키를 모르더라도 user_id를 변경할 수는 없지만 user_id는 쉽게 읽을 수 있음을 의미합니다. 이것은 Rails 3 앱의 기본값입니다.

secret_key_base를 설정하면 쿠키가 암호화됩니다. 이는 암호화 된 쿠키를 사용자가 변경하거나 읽을 수 없다는 점에서 서명 된 쿠키보다 한 걸음 더 나아갑니다. 레일스 4에서 시작하는 기본값입니다.

secret_key_base은 기본적으로 레일스 4에 있습니다 : config/secrets.yml. 레일

사용 4 : D :

# In rails 4 by default, this will be encrypted and signed 
session[user_id] = 1