2013-01-14 78 views
3

我們剛剛安排了一位安全審覈員,標記我們使用永久性Cookie來維護我們網絡應用程序的登錄狀態。作爲一種背景,我們的Web應用程序是多租戶的,但沒有(或不是很多)操作具有破壞性。根據我們門戶網站提供的租戶敏感信息,可能會有所不同。是否使用永久性Cookie

當我們設計我們的應用程序時,我們討論了持久性cookie的使用,並決定我們應該基於可用性。我們沒有,但仍然沒有達到某種程度,認爲這些信息是敏感的。我們的用戶是相當新手,我們更關心有數百個重置密碼請求。

是否使用永久性cookies進行登錄被認爲存在安全風險?當我們談論一些相當大的企業的運營數據時,甚至討論是否可交換?

我們對於持久性cookies沒有任何問題 - 而不是來自我們的任何客戶。爲了滿足雙方的需求,是否值得實施「堅持打勾」?

+1

安全性總是與可用性進行權衡,在大多數情況下,用戶比開發人員和開發人員知道的要比審覈人員更瞭解哪種折衷是可以做到的。 – Kimvais

+1

您可以通過http://security.stackexchange.com/獲得有關此問題的更好答案。 –

+1

@IlmariKaronen我曾考慮過這個問題,但我追蹤的是非安全人士的觀點,他們會從籬笆兩側看到問題;安全性vs可用性。 –

回答

2

持久性餅乾,由於各種原因而被使用,並支持衆多功能。如果您的應用程序絕對沒有「敏感」,那麼您可以使用持久性cookie進行永久身份驗證,然後發出重新身份驗證以訪問用戶帳戶詳細信息,或做一些更改(即更改密碼或電子郵件地址)。你提到你的用戶是新手,所以我不認爲他們知道如果別人使用他們的瀏覽器,他們也將被認證,而不知道他或她的密碼(我會指出給用戶)。

但是,像網上銀行這樣的安全關鍵應用程序不存在持久性登錄Cookie的原因之一是,儘管他們可以,因爲在對帳戶餘額進行任何更改之前,您必須通過手機重新進行身份驗證或某種形式的OTP)。但它被認爲是不安全的,也許是因爲了解某人的平衡已經侵犯了他們的隱私。因此,如果您的應用不受任何政府機構的控制,並且您沒有受到您所在國家/地區的任何法律的約束,並且您對應用的敏感部分實施了重新授權,則可以發行2-3周的持續性Cookie對於身份驗證,這不是一個重大的安全威脅。

+0

這就是我們正在操作的原因。審計師確實提到銀行會發現持久性cookies是不可接受的,但我們目前還沒有任何客戶。我想這裏的答案是;當需要禁用持久性cookie時,我們會這樣做。 –

0

如果永久性cookie不被信任,Fatfredyy的建議聽起來很棒。

但是,如果問題是不安全使用持久性cookie,爲什麼不加密呢?

在勾選「記住我」或默認情況下會生成一個cookie,其中包括用戶的一些不可理解的唯一ID和包含驗證的加密部分。對稱加密的關鍵是使用用戶標識存儲在數據庫中,並且永遠不會與用戶共享。當用戶重新訪問時,您使用ID訪問密鑰並解密其餘密鑰,驗證是否沒有篡改。

當試圖擺弄用戶標識時,向用戶顯示一條消息並更改加密密鑰,要求用戶重新進行身份驗證。

這將使您可以使用持久性cookie而不會危害用戶。