首页 > 解决方案 > 如何防止 ASP.NET 解决方案中的 URL 文档访问?

问题描述

当我输入“ https://localhost:12345/Help/ExampleDocument.pdf ”时出现问题/错误,pdf 将在 IE 中成功呈现。我希望用户仅在经过身份验证后才访问此文档,并到达我挂钩的菜单点以在单独的页面上显示该文档/参考。如何确保用户无法从应用主页访问解决方案中的静态文件夹文档?我正在浏览一些相关文章,并看到一些暗示在 HTTP 请求级别工作的建议......但我想知道我是否应该放慢每个请求来检查这样的东西?

我们的 ASP 应用程序有一个Global.asax.cs文件,其中包括以下方法:

protected void Application_Start(object sender, EventArgs e)
protected void Application_BeginRequest(object sender, EventArgs e)
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)

所以我想我可以在这里抛出一些条件来阻止请求通过,或者至少尝试一下,但是有没有更好的方法来处理 Visual Studio 解决方案中的文档保护?

该文件目前位于Solution\WebApp\Help\ExampleDocument.pdf

标签: c#asp.netvisual-studio-2019

解决方案


目前,您通过基本 HTTP 授予访问权限。旧的 HTTP 文件夹安全性是您可以做的限制。该系统从未设计用于登录或安全性。

HTTP 5 可能有更好的解决方案,但通常您必须:

  • 不通过 HTTP 公开文件/文件夹
  • 编写并注册一个 HTTP 处理程序,它将检索并返回数据。
  • 在处理程序中,您可以执行所需的所有操作 - 包括登录检查 + 重定向

这些处理程序在从数据库中传递 blob 时特别使用。这可能是一个 blob/DB 场景。如果是这样,您可能需要做一些设计决策

但是一些 WebServers 也将这些处理程序用于“将文件夹结构下载为 *.zip 文件”之类的东西。

ASP.Net HTTP 处理程序可能是最常用的工具,您从未意识到自己一直在使用: https: //support.microsoft.com/en-us/help/307985/info-asp-net-http-modules-and- http-handlers-overview


推荐阅读