是否使用持久性cookie

时间:2013-01-14 06:48:55

标签: security cookies session-cookies

我们刚刚有一个安全审核员标记我们使用持久性cookie来维护我们的Web应用程序中的登录状态。作为一个背景,我们的Web应用程序是多租户的,但没有(或没有很多)操作是破坏性的。根据租户的不同,可能会通过我们的门户网站提供敏感信息。

当我们设计我们的应用程序时,我们讨论了持久性cookie的使用,并决定我们应该基于可用性。我们没有,并且仍然没有在某种程度上认为可用的信息是敏感的。我们的用户相当新手,我们更关注数百个重置密码请求。

使用持久性cookie进行登录是否存在安全风险?当我们谈论一些相当大的企业的运营数据时,是否可以在可用性上进行权衡?

我们之前对持久性cookie没有任何疑问 - 不是来自任何客户。是否值得实施一个'tick to persist',默认为关闭以满足双方的需求?

2 个答案:

答案 0 :(得分:2)

持久性cookie,由于各种原因而被使用,并支持众多功能。如果您的应用程序绝对没有任何“敏感”,那么您可以使用持久性cookie进行永久性身份验证,然后发出重新身份验证以访问用户帐户详细信息,或进行一些更改(即更改密码或电子邮件地址)。你提到你的用户是新手,所以我不认为他们知道如果其他人使用他们的浏览器,他们也会在不知道他或她的密码的情况下进行身份验证(我会向用户指出)。

但是有一个原因,为什么像网上银行这样的安全关键应用程序不会发布持久登录cookie,尽管他们可以,因为在对帐户余额进行任何更改之前,您必须在带外重新进行身份验证(通过移动设备,或某种形式的OTP)。但它被认为是不安全的,也许是因为了解某人的平衡已经侵犯了他们的隐私。

因此,如果您的应用不受任何政府机构的控制,并且您不受您所在国家/地区的任何法律约束,并且您对应用的敏感部分实施了重新验证,则会发布2-3周的持久性Cookie身份验证,不是一个重大的安全威胁。

答案 1 :(得分:0)

如果不信任持久性cookie,Fatfredyy的建议听起来很棒。

但是,如果问题是不安全使用持久性cookie,为什么不对它们进行加密?

勾选“记住我”或默认情况下会生成一个Cookie,其中包含一些用户无法识别的唯一ID以及包含验证的加密部分。对称加密的关键是使用用户ID存储在DB中,并且永远不会与用户共享。当用户重新访问时,您使用ID访问密钥并解密其余密钥,验证没有进行任何篡改。

当识别出试图使用用户ID时,向用户显示一条消息并更改加密密钥,要求用户重新进行身份验证。

这将使您能够在不损害用户的情况下使用持久性cookie。