【发布时间】:2013-07-28 20:37:11
【问题描述】:
我正在使用 ASP.NET MVC4 创建一个站点,该站点上的功能之一是供用户上传图像。这些图像可能是个人性质的,几乎肯定包含他们孩子的图像。
图像连同其元数据一起存储在 MS Azure SQL 数据库中。为了节省 azure 上的带宽使用,一旦下载了图像,它就会保存到用户目录
~/UserImages/<Username>/<Image>
加载图库页面时,控制器操作会根据用户目录中的内容检查数据库,并删除任何不存在的内容。
目录的<Username> 部分是控制器在需要时创建的,因此我无法对其设置IIS 权限。但是,即使我是,我也不确定 IIS 能做什么,因为事先不知道用户(新注册等)。
由于 MVC 路由,用户无法通过猜测用户名来访问其他用户目录,但是如果您可以猜测用户名和图像名,那么它会显示。我正在寻找防止这种情况发生的想法,以尽量减少其他人的图像暴露给他人的机会。
我尝试了IgnoreRoute,但这不起作用。
routes.IgnoreRoute("UserImages/{*pathInfo}");
理想情况下,我会在注销时清除 UserImages 目录,但不是每个人都会使用注销命令。如果它们被清除,那么在删除文件之前找到用户名和图像名组合的可能性就会小得多。
【问题讨论】: