4

我試圖讓我的頭繞過ASP.NET Web API 2中基於聲明的身份驗證。在我的應用程序中,我使用VS 2013模板實現OAuth 2.0並使用持票人令牌智威湯遜,我記得)。我的問題是 - 在客戶端持續使用令牌的最佳方式是什麼?在他的書中,Badrinarayanan Lakshmiraghavan將持票人的記號描述爲:如何在客戶端持久化不記名令牌

不記名令牌就像現金:發現者,守護者。

因此,將它保存到cookie是否安全?這是不是意味着誰會竊取cookie會得到完整的應用程序訪問權限?另一方面,我可以在將它保存到cookie之前使用散列加密該令牌。它會足夠安全嗎?還有其他的選擇嗎?我已經看到幾個問題在stackoverflow上提出類似的問題,但從來沒有找到滿意的答案。

回答

5

將它保存到cookie是否安全?

號Cookie可以通過跨站腳本攻擊(和其他載體) 此外,由於Cookie將自動與任何請求提交,這可能是易受CSRF被竊取。

我可以把它保存在cookie的

這也將無法正常工作之前使用加密散列令牌。散列是加密的安全方式(而且不允許解密)

是否還有其他選擇嗎?

基本上,你應該給通過安全連接的令牌給用戶(HTTPS),但他們應該手動提交它的安全性(再次通過HTTPS)

+0

「基本上,你應該給的令牌用戶通過安全連接(HTTPS),但他們應該手動提交以確保安全(再次通過HTTPS)'。仍然沒有完全回答這個問題。這是否意味着只要我使用HTTPS就可以使用cookie? – Bartosz

+0

不可以。通過XSS攻擊可以輕鬆竊取Cookie。 Cookies也會自動提交任何網頁請求,因此它們易受跨網站請求僞造。查看(https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29)瞭解更多信息。 – akirilov

+0

Web API 2中的承載令牌的默認時間跨度爲14天。那麼你如何在客戶端保存這個令牌呢? – Bartosz