2010-05-03 38 views
14

我剛開始研究OAuth,看起來非常好。我現在有紅寶石oauth with twitter working從OAuth安全地存儲令牌/祕密/等的正確方法?

現在我想知道,什麼是建議的安全方式來存儲響應在我的本地數據庫和會話?

  • 我應該存儲什麼?
  • 我應該在哪裏存放它?

此示例twitter-oauth-with-rails應用商店在所述會話的user.id,並且用戶表具有tokensecret。但是,這似乎是通過傳遞一系列測試用戶標識來破解和獲取祕密非常簡單,不是嗎?

回答

1

如果您正在開發Web應用程序,您可以將hidden字段添加到用戶提交的表單中,並使用user.id計算出一些類似散列的值,這樣惡意的用戶就無法更改該值,只能「猜測」訪問代幣

6

如果沒有您的Twitter應用程序的消費者密鑰/祕密,令牌就沒用了,因爲它們對於每個應用程序都不相同,但取決於消費者密鑰/密碼。

要獲得一個會話變量,您將不得不猜測會話ID,這是不容易完成的。

如果您希望可以將這些令牌存儲在會話中,但我會建議將用戶令牌與所有其他用戶數據一起存儲在數據庫中,以便您的會話僅包含數據以標識系統中的用戶。

更新:我不確定是否正確理解您通過猜測ID從數據庫訪問令牌的含義。

您是否有任何身份驗證,以便用戶必須輸入一些憑據才能訪問其數據?您應該以存儲用戶電子郵件地址或密碼的相同方式存儲令牌,並且只有經過驗證的用戶才能訪問它。

+0

謝謝,這很有幫助。我只是試圖真正掌握最好的方法來做到這一點,因爲很多人都說過從不在會話中存儲任何機密數據。但似乎可能通過id從數據庫訪問用戶模型(如果它在會話中),_if_開發人員留下了一些暴露的內容。類似的東西。 – 2010-05-04 16:33:09

+0

會話數據對於用戶是不可訪問的,因爲他們只知道會話標識,而不知道會話中存儲了什麼。訪問其他用戶的會話數據的唯一方法是使用會話劫持,但它不僅僅是將一個小數字替換爲另一個數字。看到這裏:http://en.wikipedia.org/wiki/Session_hijacking – 2010-05-04 18:13:03

+0

如果你考慮它,那麼沒有其他方式可以告訴會話屬於哪個用戶,因爲你只能使用cookie,這就是會話的作用,但更安全而不僅僅是將用戶標識存儲在cookie中。 – 2010-05-04 18:16:32

相關問題