Asp.net - 阻止从特定文件夹下载文件(PDF,Word)

时间:2011-11-30 14:58:44

标签: asp.net security webforms

我正在创建一个招聘网站,并有一个名为/ CV /的文件夹,我存储会员上传的简历文件。

让我们说用户保存他们的简历及其名为123.pdf,并存储在cv / 123.pdf中。 如果他们输入“http://mydomain.com/cv/123.pdf”,如何阻止pdf文件在浏览器窗口中加载或下载到用户计算机?

我在IIS6服务器上使用表单身份验证,Asp.Net成员身份和角色提供程序,Asp.net 4。

3 个答案:

答案 0 :(得分:4)

最好的方法是将文件放在其他地方,并编写一些代码来访问它们 - 然后该代码可以验证调用者是否具有必要的权限。

例如,您可以将文件存储在/uploads/xyz123/目录中。然后,为了下载文件,例如myresume.pdf,用户必须浏览http://yourserver/download.aspx?file=myresume.pdf

该页面然后进行必要的验证,加载文件并将其作为二进制文件输出到浏览器,如下所示:

Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment; filename=" + filename);
Response.AddHeader("content-length", binaryStream.Length.ToString);
Response.BinaryWrite(binaryStream.ToArray());
Response.Flush();
Response.End();

没有用户会知道文件的实际存储位置。

答案 1 :(得分:4)

  1. 创建一个文件夹,该文件夹位于网站使用的主www文件夹的层次结构之外(因此无法通过网址直接访问)
  2. 使用ashx处理程序提供下载文件的权限。 ashx文件中的逻辑可以验证用户是否有权下载文件。
  3. ASHX参考:123

答案 2 :(得分:3)

您可以将文件简单地保存在不属于Web应用程序的目录中。

如果您想存储不应通过http访问的文件,请执行此操作。