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

C# 将使用OutputCacheLocation.client在客户端上缓存我的应用程序数据,将数据暴露给未经授权的用户,c#,asp.net,asp.net-mvc,caching,outputcache,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 Action

我在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)
但是关于在客户机上缓存数据的安全问题,我有以下问题:

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

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


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

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

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

    若页面包含某种特定于特定用户的私有数据,那个么最好不要缓存它


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

    感谢您的回复,因此使用OutputCacheLocation在客户端缓存数据。客户端可能会将数据公开给外部用户,在这种情况下,最好不要使用它,因为在我的情况下,此数据被视为私有数据。。。