如何保护文件免受直接下载?

时间:2014-05-11 13:00:15

标签: asp.net-mvc

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

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

除了我的代码外,如何保护我的磁盘上的文件不被下载?

2 个答案:

答案 0 :(得分:3)

有几种方法可以阻止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>

2)如果你正在寻找一个更简单的“穷人”&#34;阻止静态文件处理程序提供文件的方法,你可以使文件&#34;隐藏&#34; (从文件系统属性的角度来看)。静态文件处理程序不会提供隐藏文件。

答案 1 :(得分:1)

答案很简单:不要将这些文件放在您的网站中,将它们放在网站的根目录之外。

您可以将IIS配置为不通过请求过滤为此文件夹提供请求:                                                                                                      

我假设这些路径不是您想要服务的路径吗?