我有两台服务器,一台用于我的MVC应用程序,另一台用于存储图像等大型文件,两者都运行在Windows Server 2012 R2上。
如何防止直接访问存储服务器上的文件?
比如说MVC在IP1/
上,而存储在IP2/
上。
文件链接如下所示:IP2/MediaFiles/2015/12/image0001.jpg
.
我需要只有来自IP1
的GET
请求才能访问上面的链接。如何进行?
更新
IP1
上的server 1需要不共享文件,因为媒体服务器位于IP2
上,我们不需要在server 1的RAM上加载每个请求的文件。(server 1很快就会崩溃!)因此,不能使用HttpHandler
!
在这个问题中,我正在寻找一种方法,通过输入直接地址来阻止未经授权的用户访问server 2(在IP2
上)上的文件。
2条答案
按热度按时间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
ar5n3qh52#
所有你想要的都在
Web.Config
文件中。如果你在那里使用IIS,你应该把它放在你的文件存储服务器的根目录下。在
<system.webServer>
节点中,您应该放置以下代码:此规则将被根文件夹的所有子文件夹接受。如果您只需要阻止特定文件夹的请求,您应该将
Web.Config
放在那里。