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



我在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身份验证来验证用户。访问同一台公共电脑的外部用户也可以看到缓存的数据。或者缓存的数据只能由经过身份验证和授权的用户访问和查看?

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

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

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

许多网站也使用非窗口身份验证(使用完全自定义的或第三方的身份系统,如OAuth到Facebook/Google/Microsoft帐户)-在这种情况下,浏览器运行的帐户(缓存范围到此帐户)和"网站帐户"之间绝对没有联系。你经常在公共机器商店/办公室看到处于"信息亭"模式的机器,这些机器可以在不从Windows登录/注销的情况下下单/查看邮件/Facebook等。

若页面包含某种只针对特定用户的私有数据,你们最好不要缓存它

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

最新更新