2011-08-14 55 views
1

我試圖把一個相當快速的mash-up放在一起,我認爲這對人們很有用,而且我想利用Twitter通信。這是我第一次使用OAuth,我選擇了Twitterizer庫來完成工作。Twitter OAuth令牌存儲沒有用戶數據庫?

我的問題來自於我不打算存儲用戶信息或讓用戶創建帳戶(它意味着更多的是快速實用程序)。鑑於此,一旦我獲得用戶的OAuth訪問令牌和祕密,我必須找出一種安全的方式來存儲它們(可能是本地的),而不會影響OAuth的安全原則。

這裏是我至今想:

  • 用戶經歷的過程,直到我有自己的訪問密鑰和祕密
  • 我在Cookie加密值和存儲檢索後

然而,有幾個問題/顧慮:

  • 什麼(如果有的話),防止有人通過cookie模仿用戶?
  • 在同一瀏覽器中處理潛在多個用戶的正確方法是什麼?我最初的想法是在我的應用程序上的一個「註銷」按鈕,它會殺死cookie,但我不確定。

在此先感謝您的幫助!

+0

如何計劃檢索您散列的訪問密鑰和祕密值?你的意思是加密它們並將它們加密存儲在cookie中? – userx

+0

是的,正確的 - 謝謝!我會澄清。 – SeanKilleen

+0

儘管您已經提供了大量的上下文很好,但人們應該明白,您提出的問題非常廣泛:我如何最好地將敏感信息存儲在cookie中?這是個好主意嗎? –

回答

0

我不太瞭解OAuth,因爲我不使用它,但在一個瀏覽器上處理多個用戶的一種方法是使用某種計時器功能。每次用戶連接到您的頁面時,cookie都會有一個「有效期」的時間戳,例如現在爲+30分鐘。如果有效期到了,應用程序會要求用戶重新進行身份驗證。

您甚至可以通過在頁面卸載上設置非常短的時間戳然後在頁面加載上設置更長的時間來完成此操作。這意味着,如果用戶在您的應用中從一個頁面轉到另一個頁面,他們將會有很長的超時時間,但是如果他們離開您的應用,下一個用戶可以在一分鐘內使用同一瀏覽器,而無需以前的用戶登錄。

更安全的方式可能是使用會話。例如,您可以設置一個包含會話ID的cookie,然後在會話中設置「有效期」值。

但請注意,這些方法絕對不是傻瓜式的,因爲可以操作cookies,更改時間戳和會話劫持。

+0

嗨路寶 - 感謝您的迴應!不過,我認爲目標是避免用戶每次使用時都不得不重新授權我的應用程序以發送推文,因爲這已成爲非標準行爲(因爲大多數站點授權一次並存儲在用戶數據庫)。我認爲計時器對我所做的事情可能是過度的,但我會更詳細地檢查會話選項,因爲這會更好地用於公共場合。也許重新授權一次會話不會那麼糟糕.. – SeanKilleen

0

我覺得總的來說,餅乾不應該依賴於敏感信息,但是,安全始終是一種平衡行爲。最終,你試圖掩蓋你不安全地存儲的信息。

除了加密令牌之外,還可以包含校驗和。我會保存在一個單獨的cookie中。只需要您的網站可以使用它來驗證敏感數據的完整性,以確保它不會被篡改。它可能是單向加密散列或類似的東西。

您也可以在cookie上指定到期日期。也許保持它幾天或幾周。

我會再說一遍,通常將敏感信息存儲在cookie中是一個壞主意。