簡體   English   中英

如果僅標記為 HTTP,我能否將 OpenID Connect id_token 和 access_token 安全地存儲在 cookie 中?

[英]Can I securely store an OpenID Connect id_token and access_token in a cookie if it's marked as HTTP only?

我正在將舊應用程序(ASP.NET MVC 4 應用程序)與 OpenID Connect 集成。 從我的 OIDC 提供商處獲得 id_token 和 access_token 后,我需要存儲它們。 在典型的方式中,它們必須從客戶端“通過線路”發送到服務器端,因為服務器端必須處理 id_token 以確定哪個用戶發出了請求。 我的應用程序不處理 access_token。 它只是存儲在我的應用程序中,直到我需要向需要 JWT 承載身份驗證的 API 發出請求。

我看到的方式是 id_token 和 access_token 是從客戶端和服務器發送的,無論是標頭還是 cookie。 如果 id_token 和 access_token 僅標記為 HTTP,我可以將 id_token 和 access_token 安全地存儲在 cookie 中嗎?

編輯:我應該添加更多關於我的場景的信息。

1) 我的應用程序始終使用 HTTPS,並且所有 cookie 都標記為安全。 這消除了 MITM(中間人)漏洞

2) 每個 PUT、POST 和 DELETE 請求都使用 ASP.NET 的防偽令牌類。 這可以防止 XSRF。

3) 所有輸入都使用 ASP.NET 庫進行轉義和清理,從而消除了 XSS 漏洞。

4) 包含 id_token 的 cookie 將被標記為僅 http,從而消除了從客戶端讀取和訪問 cookie 的能力。

您可能不應該將令牌存儲在 cookie 中。 理想情況下,訪問令牌將存儲在客戶端的內存中。 這樣它們就不會隨着請求自動發送到服務器,這就是 cookie 存在風險的原因。 其他任何地方都可能讓您面臨潛在的漏洞。

標題為“OAuth 2.0 威脅模型和安全注意事項”的RFC 6819規范涉及圍繞 OAuth 令牌的風險和漏洞。 具體來說,我建議閱讀以下部分:

在我編寫的應用程序中,令牌已存儲在本地存儲和內存中。

我建議您通讀 OAuth 2.0 規范,以便了解使用 OAuth 2.0 時所涉及的風險。

請不要指望這一點,HttpOnly 是一個標志,它告訴瀏覽器該 cookie 不應被客戶端腳本訪問,並且僅當瀏覽器支持它時才為真。 您可以在此處找到更多信息: https : //www.owasp.org/index.php/HttpOnly另外我建議在 OWASP 網站上深入了解一下,因為他們有關於您列出的問題的最佳實踐的文檔。

您可以在此處查看您的瀏覽器是否支持HttpOnlyhttps : HttpOnly ? HttpOnly = HttpOnly

到 2021 年,95% 的瀏覽器都支持它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM