如何保护文件不被直接下载?

Bri*_*ard 2 asp.net-mvc

我正在开发一个网上商店,其中一些产品需要是可下载的文件(电子书、图像、mp3 等)。我将文件存储在项目的子文件夹中,并且只是在数据库中对它们的引用。

我不希望任何拥有直接文件链接的人能够下载它们,我想自己控制它。下载只能通过我的商店提供 - 即我的客户区域,用户可以在其中看到他们购买的所有电子产品。

如何保护磁盘上的文件不被除我的代码之外的其他人下载?

Bil*_*lam 5

有多种方法可以阻止 IIS 静态文件处理程序向客户端提供文件。

1) 配置中的使用部分。您可以使用hiddenSegments 元素来指定将不提供服务的子分段路径。查看 %windir%\system32\inetsrv\config\applicationhost.config 以了解如何定义此部分并用于防止访问 bin 文件夹和其他目录。

<configuration>
    <system.webServer>
        <security>
            <requestFiltering>
                 <hiddenSegments>
                      <add segment="subdirectoryName" />
                 </hiddenSegments>
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

2)如果您正在寻找一种更简单的“穷人”方式来阻止静态文件处理程序提供文件,您可以将文件设置为“隐藏”(从文件系统属性的角度来看)。静态文件处理程序不会提供隐藏文件。