2012-06-18 24 views
1

我使用Sinatra和Omniauth(特別是google oauth2)來爲網站提供服務。我對於在cookie中存儲哪些數據是安全的,以及哪些數據是不安全的存在困惑。使用Omniauth進行身份驗證時,我應該在cookie中存儲哪些數據?

我傾向於說我應該簡單地在Cookie中存儲一個authorized => true字段,一旦我確認AuthHash包含訪問令牌。 Cookie使用Rack::Sesssion::Cookie:secret => "some-really-long-and-strong-password"進行保護。這個想法是否正確?此外,如果有人想破解網站(即登錄時沒有真正登錄),他們所需要做的就是成功破解cookie的祕密,並用authorized => true製作假cookie,對吧?

我沒有看到將存儲在Omniauth::AuthHash的憑據部分的實際訪問密鑰的任何值,因爲這似乎是敏感信息...

回答

2

我在什麼有些困惑數據安全地存儲在cookie中,而不是。

在一般情況下,這是最壞的情況下,如果有人竊取用戶的cookie:

  • 劫持用戶會話
  • 竊取包含在Cookie
  • 未經授權的訪問
所有數據

我想你想使用的是一種真實性標記形式,你可以來回傳遞來驗證真實性用戶和他們的要求。

參考

我檢查了部分Example and characteristics,特別是Prevention

+0

謝謝,如果cookie的祕密足夠強大,我是否正確地說「竊取cookie中包含的所有數據」是具有挑戰性的?對於使用標籤的CSRF,最糟糕的情況似乎是您獲得經過身份驗證的用戶對該網站執行意外操作。如果這是一個有點無害的情況(即該網站沒有做任何太敏感的事情),那麼我不會過分擔心這一點。劫持用戶的會話也一樣。 – jabalsad

+0

您可以加密cookie數據,這會使其更安全。 –

+0

看看encrypted_cookie https://rubygems.org/gems/encrypted_cookie – iain

相關問題