2012-08-12 68 views

回答

3

好的。固有地坚持某种东西意味着有人不应该得到它的机会更多。如果它敏感,那么这是一个新引入的危险。

两个相关的问题是:

  1. 可能性有多大被泄露。
  2. 这很敏感。

缓存在内存中的东西不太可能泄露,但这是可能的。

缓存在内存中并可通过会话或cookie访问的内容更可能被泄露(分别劫持会话或cookie)。

缓存在数据库中的东西更可能被泄露(比内存转储窃取文件更容易)。

考虑一个真实世界的例子,那些有“记住我”选项的网站。这个可以,大多数社交网站都可以。它增加了冒险,有人可能会获得冒充你的数据,但更糟糕的是,这可能意味着他们会绕过垃圾邮件直到你的帐户被禁止 - 令人讨厌但不是世界末日。

大多数银行网站没有“记住我”选项。泄漏风险同样很低(如果他们坚持在某些操作之前确认,确实较低),但等效数据的价值要高得多,并且风险不再可接受。

编辑:我给的例子中要注意的一件重要事情。 “记住你”的网站通过以某种方式记住你已经登录,而不是通过用户/通行证来做到这一点(使用OpenID的网站甚至没有看到用户/通行证)。如果您记得用户/密码,可能会泄漏许多网站中使用的用户/密码,而不是冒着让别人登录到您的网站的风险,因此风险再次高得多。

1

这取决于你用它做什么。数据保存在Web服务器的内存中。没有办法访问这些数据,除非你写了一个方法去做,或者攻击者可以访问你的源代码&写访问这个web应用程序。

+0

一旦用户通过身份验证,而不是有10个会话,例如会话(“用户名”),会话(“部门”)等;你建议添加一个对象来缓存所有10个属性?例如我有一个方法:Sub [Set](key As String,data As Object,minutesToCache As CacheTimes) – JoshYates1980 2017-03-28 22:40:37

2

按照微软的模式&实践这个他们认为

Do not cache sensitive data

如果你的服务方法中包含的数据是敏感的,如 密码,信用卡号或账户状态,它缓存不应该是 。如果敏感数据缓存在客户端计算机上,则其具有严重的安全隐患,因为它会使攻击者可以使用有趣的数据 。

执行以下步骤以确保敏感数据不 缓存:

对敏感数据审查操作。查看您的所有操作 以了解敏感数据的使用情况。这可能包括但不限于: 包含个人身份信息 (PII)或可用于派生PII的信息,不应与 用户共享用户提供的信息,他们不希望与其他人共享 应用程序的用户来自 未设计为与用户共享的外部可信来源的信息 查看缓存敏感数据的操作。查看每个操作如何管理敏感数据并确保其不被缓存。 有敏感数据缓存,你可以查看 为三种模式:自定义缓存代码如采用通过的System.Web.Caching.Cache字典或排序列表 对象使用ASP.NET缓存的。使用 企业库缓存块

+0

我想在缓存中存储guid key和用户邮件来标识用户如何保持登录但关闭了网页,所以当他打开我的网站时,他会自动登录。 这个数据是敏感的,如果有人有这个密钥和邮件他可以登录到这个帐户。所以这种数据存储在缓存是合理的吗?谢谢 – 2012-08-12 16:01:21

0

我倾向于缓存加密的数据,并且只在请求点进行解密。最后归零内存。

猜猜它是否留在内存中,以纯文本方式,攻击者从内存转储中取出内存不会太难。

相关问题