将使用OutputCacheLocation.Client在客户端上缓存我的应用程序数据,将数据暴露给未经授权的用户

时间:2014-01-03 01:47:20

标签: c# asp.net asp.net-mvc caching outputcache

我在asp.net mvc web应用程序中定义了以下缓存设置,以在客户端缓存操作方法数据: -

[Authorize]
[OutputCache(CacheProfile = "VShort", Location = OutputCacheLocation.Client, VaryByHeader = "X-Requested-With")]
public ActionResult Index(string searchTerm = "", int page = 1)public ActionResult Index(string searchTerm = "", int page = 1)

但是我对于在客户端缓存数据的安全问题有以下问题:

  1. 如果授权用户从公共PC访问系统,则asp.net mvc Web应用程序使用Windows身份验证对用户进行身份验证。访问同一台公共PC的外部用户也可以看到缓存的数据。或缓存的数据只能由经过身份验证和授权的用户访问和查看?

  2. 如果客户端上的缓存数据会将数据暴露给外部用户,是否有办法使客户端缓存数据更安全? 感谢

1 个答案:

答案 0 :(得分:1)

如果预计从共享桌面访问您的应用程序,那么客户端上的缓存确实会暴露数据。

在Windows中,“客户端缓存”是每个Windows用户。但在许多情况下,“Windows用户”和“网站用户”是两个不同的概念。即使您使用Windows身份验证,通常也可以以当前登录用户的不同Windows用户身份登录网站。

许多网站也使用非窗口身份验证(使用完全自定义或第三方身份系统,如OAuth到Facebook / Google / Microsoft帐户) - 在这种情况下,帐户浏览器运行之间绝对没有关系(缓存范围到此帐户) )和“网站帐户”。您经常在公共机器商店/办公室的“自助服务终端”模式下看到机器,无需登录/退出Windows即可下订单/查收邮件/ Facebook等。

如果页面包含某些特定于特定用户的私有数据,则最好不要缓存它。

在这种情况下,提高网站性能的一种可能方法是将页面拆分为可缓存部分,其中包含一些静态内容和使用AJAX加载的非缓存用户数据。