Asp.net mvc 阻止直接访问IIS服务器上的文件
我有两台服务器,一台用于我的mvc应用程序,另一台用于存储图像等大型文件,都运行在Windows Server 2012 R2上 如何防止直接访问存储服务器上的文件 比如说,mvc在Asp.net mvc 阻止直接访问IIS服务器上的文件,asp.net-mvc,iis,windows-server-2012,windows-server,Asp.net Mvc,Iis,Windows Server 2012,Windows Server,我有两台服务器,一台用于我的mvc应用程序,另一台用于存储图像等大型文件,都运行在Windows Server 2012 R2上 如何防止直接访问存储服务器上的文件 比如说,mvc在IP1/上,而存储在IP2/上 指向文件的链接类似于:IP2/MediaFiles/2015/12/image0001.jpg 我只需要从IP1获取请求就可以访问上面的链接。怎么做 更新 IP1上的服务器1不需要文件共享,因为媒体服务器位于IP2上,我们不需要在服务器1的RAM上按请求加载文件。(服务器1将很快崩溃
IP1/
上,而存储在IP2/
上
指向文件的链接类似于:IP2/MediaFiles/2015/12/image0001.jpg
我只需要从IP1
获取请求就可以访问上面的链接。怎么做
更新
IP1
上的服务器1不需要文件共享,因为媒体服务器位于IP2
上,我们不需要在服务器1的RAM上按请求加载文件。(服务器1将很快崩溃!)因此不能使用HttpHandler
在这个问题中,我正在寻找一种方法,通过输入直接地址来防止未经授权的用户访问server2(在IP2
)上的文件。您想要的全部内容都在Web.Config
文件中。如果在文件存储服务器的根目录中使用IIS,则应将其放置在该服务器的根目录中
在
节点中,您应该放置以下代码:
<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>
如果您想了解更多有关IIS中IP黑白列表的信息。好的,我找到了解决方案
解决这些问题需要根据您的需要从不同来源收集一些技巧。我正在寻找一种方法,以防止未经授权的用户访问文件服务器上的文件,这是不同于您的主服务器。(主服务器正在授权用户)
首先,我使用IIS规则阻止了所有包含敏感文件Url模式的传入请求。然后,我为文件服务器编写了几行代码,以使用IHttpHandler
接口处理Http请求,以便1)检查授权规则,2)在不将文件转换为字节数组的情况下向客户端发送准确的文件。最后,我曾经美化指向文件服务器的链接!这就是所有人;)
现在:
物理链接[被阻止]:IP2/MediaFiles/2015/12/image0001.jpg
虚拟链接:IP2/Please/Find/A/File/By/DB/Id/1
-->image0001.jpg
您的意思是IP1真的提出了请求,还是图像显示在IP1提供服务的网页上?这两者之间有着巨大的差异。在第一种情况下,您可以执行以下teo建议的操作。在第二种情况下,你完全无能为力。为了让任何客户端都能够显示该图像,他们将需要访问它。@ChrisPratt关于使用MVC的故事完全与您的评论有关。客户端使用自己的IP
而不是IP1。正如您所提到的,IP1只提供页面服务,与存储无关。我已经更新了我的问题,请检查一下。我仍然不确定我是否在跟踪你。如果要在HTML中创建指向文件服务器的锚链接或img标记,则所有可以访问该页面的用户也必须直接访问文件服务器上的文件。您不能将其限制为只能在MVC站点提供的网页上下文中查看。每个请求都被单独处理。@ChrisPratt谢谢您的评论,我已经解决了这个问题并找到了解决方案。谢谢您的回答。我想我的更新会更好地说明我的问题。谢谢