Caching 基于Web服务器会话的缓存安全问题?

Caching 基于Web服务器会话的缓存安全问题?,caching,iis-7,Caching,Iis 7,我想知道我所做的是否是一个好的实践。请告知。谢谢 我的web应用程序服务器缓存生成的图表图像,以便用户提高性能。 图像存储在基于会话的文件夹中,并在其中生成文件夹名称。 假设user1绘制了一张图表并缓存在服务器上: webapp\sessionFolder\aklfq13d10jd10\image.jpg 我禁用了IIS7目录浏览。 但我发现系统的其他用户也可以访问图像,如果他们输入完整的url。但他们不应该看到它,因为它是为user1缓存的 如何避免此类非法访问?还是有更好的实践来实现这种w

我想知道我所做的是否是一个好的实践。请告知。谢谢

我的web应用程序服务器缓存生成的图表图像,以便用户提高性能。 图像存储在基于会话的文件夹中,并在其中生成文件夹名称。 假设user1绘制了一张图表并缓存在服务器上: webapp\sessionFolder\aklfq13d10jd10\image.jpg

我禁用了IIS7目录浏览。 但我发现系统的其他用户也可以访问图像,如果他们输入完整的url。但他们不应该看到它,因为它是为user1缓存的

如何避免此类非法访问?还是有更好的实践来实现这种web缓存

谢谢大家!!
Kyeo

更好的方法是将图像缓存在客户端无法访问的目录(例如,App_数据的子目录)中,然后使用处理程序将文件内容从该目录流式传输给授权用户

如果文件是特定于用户的,例如,您可以将图像存储在从用户名派生的文件夹名称中:

App_Data\TempImages\User1
App_Data\TempImages\User2
然后,对内容进行流式处理的处理程序将仅对当前登录用户的文件进行流式处理,类似于(对一点错误处理进行模化):


您可以使用sessionId作为标识符,而不是用户名,但是在这种情况下,只要会话超时,缓存的数据就会变得不可访问。

Thank You@Joe。你有关于这种方法的阅读参考资料吗?我想了解更多关于实施细节的信息。你能分享一下吗?@Kyeo1983-这篇链接文章提供了创建处理程序来流式处理图像的信息。它从数据库获取图像:在您的情况下,您将从磁盘上的文件读取图像:
string path = Path.Combine(
           AppDomain.CurrentDomain.BaseDirectory, 
           "App_Data\TempImages", 
           HttpContext.Current.User.Identity.Name, 
           Request.QueryString["imageFileName"]);

... stream image at path if it exists ...