阻止直接访问IIS服务器上的文件

ntjbwcob  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(572)

我有两台服务器,一台用于我的MVC应用程序,另一台用于存储图像等大型文件,两者都运行在Windows Server 2012 R2上。
如何防止直接访问存储服务器上的文件?
比如说MVC在IP1/上,而存储在IP2/上。
文件链接如下所示:IP2/MediaFiles/2015/12/image0001.jpg .
我需要只有来自IP1GET请求才能访问上面的链接。如何进行?

更新

IP1上的server 1需要不共享文件,因为媒体服务器位于IP2上,我们不需要在server 1的RAM上加载每个请求的文件。(server 1很快就会崩溃!)因此,不能使用HttpHandler
在这个问题中,我正在寻找一种方法,通过输入直接地址来阻止未经授权的用户访问server 2(在IP2上)上的文件。

sdnqo3pr

sdnqo3pr1#

好吧,我找到解决办法了!
工作在这样的问题需要一些技巧从不同的来源收集基于您的需要。我正在寻找一种方法,以防止未经授权的用户访问文件服务器上的文件,这是不同于您的主服务器。(主服务器是授权用户)
首先,我使用IIS规则阻止了所有包含敏感文件 *Url模式 * 的传入请求。然后,我为文件服务器编写了几行代码,使用IHttpHandler接口处理Http请求,以便1)检查授权规则,2)将准确的文件发送到客户端,而不将其转换为字节数组。最后,我用This Link美化了到文件服务器的链接!)
现在:

物理链路[阻塞]IP2/MediaFiles/2015/12/image0001.jpg
虚拟链接IP2/Please/Find/A/File/By/DB/Id/1---> image0001.jpg

ar5n3qh5

ar5n3qh52#

所有你想要的都在Web.Config文件中。如果你在那里使用IIS,你应该把它放在你的文件存储服务器的根目录下。
<system.webServer>节点中,您应该放置以下代码:

<security>
    <ipSecurity allowUnlisted="false">    <!-- this line blocks everybody, except those listed below -->                
        <clear/> <!-- removes all upstream restrictions -->
        <add ipAddress="127.0.0.1" allowed="true"/>    <!-- allow requests from the local machine -->
        <add ipAddress="IP1" allowed="true"/>   <!-- allow the specific IP of IP1  -->                             
    </ipSecurity>
</security>

此规则将被根文件夹的所有子文件夹接受。如果您只需要阻止特定文件夹的请求,您应该将Web.Config放在那里。

相关问题