Asp.net 将虚拟目录映射到App_数据中用于提供图像的子文件夹是否安全?
我正在IIS7下运行一个mvc3应用程序 公众可以通过文件上载控件上载图像,该控件调整图像大小,然后将图像写入App_数据文件夹的子文件夹 当涉及到在页面上显示上传的图像时,我不能直接从App_数据子文件夹中提供这些图像,因为出于安全原因,IIS7将其限制为受保护的文件夹 如果我将一个虚拟目录映射到App_数据子文件夹,我可以为其中存储的图像提供服务,但这就提出了一个问题——这会带来安全风险吗 据我所知,只要在虚拟目录上设置了正确的权限,就应该可以了 这是正确的吗?还是我忽略了其他的东西 据我所知,只要在虚拟目录上设置了正确的权限,就应该可以了 没错。如果您确保只有授权用户才能访问此虚拟目录,那么您的文件将非常安全 但是,为了避免创建另一个虚拟目录的所有麻烦,您可以创建一个控制器操作,该操作将直接为来自此文件夹的文件提供服务:Asp.net 将虚拟目录映射到App_数据中用于提供图像的子文件夹是否安全?,asp.net,asp.net-mvc-3,iis-7,Asp.net,Asp.net Mvc 3,Iis 7,我正在IIS7下运行一个mvc3应用程序 公众可以通过文件上载控件上载图像,该控件调整图像大小,然后将图像写入App_数据文件夹的子文件夹 当涉及到在页面上显示上传的图像时,我不能直接从App_数据子文件夹中提供这些图像,因为出于安全原因,IIS7将其限制为受保护的文件夹 如果我将一个虚拟目录映射到App_数据子文件夹,我可以为其中存储的图像提供服务,但这就提出了一个问题——这会带来安全风险吗 据我所知,只要在虚拟目录上设置了正确的权限,就应该可以了 这是正确的吗?还是我忽略了其他的东西 据我所
// You could specify Roles instead of Users if you wish
[Authorize(Users = "john, jane")]
public ActionResult AppDataFile(string filename)
{
var file = Path.Combine(Server.MapPath("~/app_data"), filename);
if (!System.IO.File.Exists(file))
{
return HttpNotFound();
}
return File(file, "application/octet-stream", Path.GetFileName(file));
}
然后,当您以
jane
身份进行身份验证时,您可以/appdatafile?filename=foo.bar
从App\u Data
文件夹下载foo.bar文件。我更关心的是App\u数据文件夹以及web应用程序标识可以写入其中的事实。我想知道这些权限是否可以通过虚拟目录隐式传递。在上面的场景中-这是否仍然像静态文件一样在用户浏览器中缓存文件?@Baldy,通过使用Response.cache对象并设置适当的头,您可以完全控制缓存的内容。