如何保护Web API中的静态内容

时间:2018-02-18 01:19:56

标签: asp.net security iis asp.net-web-api2 asp.net-web-api-routing

考虑这种情况:我有一个使用Web API 2.x构建的REST API,并且身份验证由ASP.NET Identity管理。用户可以将附件作为其记录的一部分上载,这些附件全部存储在根文件夹中的磁盘上,位于名为Attachments的目录下。

现在,用户可以从他们的记录中生成PDF。 PDF包含附件文件的链接,当您单击它们时,可以愉快地提供静态文件。例如:attachments/2018/01/somefile.jpeg

我需要做的是,向授权用户提供 ONLY 这些媒体文件。基本身份验证还不够,我只能说为所有登录用户提供服务媒体文件。我需要查询数据库,检查用户分配和/或其他安全措施,并决定是否应该提供文件。

我一直在寻找可行的解决方案。如何通过Web API处理此类路由并仅向授权用户提供静态内容?值得一提的是,我没有在我的项目中使用ASP.NET MVC。它只是Web API 2.x,带有用TypeScript编写的Angular 1.6应用程序。

1 个答案:

答案 0 :(得分:0)

以下方法适合您。

第1步 - 拒绝web.config中所有用户的附件文件夹的直接访问权限,如下所示。

<location path="attachments"> 
<system.web>
<authorization> 
</authorization>
</system.web>
</location>

第2步:创建一个公共文件下载API,这应该是从服务器下载任何文件的唯一点。

您所有的安全链接应该看起来像/Download/somefilename

您可以通过针对登录用户检查请求文件,在Download API中实现数据级安全性。