我在IIS中创建了一个网站,根网站共享有一些子文件夹,用于标记页面正在使用的图像,css,js文件。但是,如果用户知道图像名称(http://hello.com/images/abc.jpg),则可以访问这些图像。
有没有办法禁用资源的直接访问?请注意,我刚刚开始学习asp.net,所以如果答案可能有点描述性,那将会很棒。
我已经了解了URL重写方法,但却无法让它工作。
编辑:我把这个web.config放在我的images文件夹中,现在它正在做相反的事情,在页面上阻止图像并直接允许它们。 任何帮助表示赞赏。<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<identity impersonate="true" />
</system.web>
<system.webServer>
<rewrite>
<rules>
<rule name="RequestBlockingRule1" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*\.(gif|jpg|png)$" />
<conditions>
<add input="{HTTP_REFERER}" pattern="^$" negate="true" />
<add input="{HTTP_REFERER}" pattern=" http://iolab023/.*" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission to view this directory or page using the credentials that you supplied." />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
答案 0 :(得分:4)
如果要阻止直接访问上下文(来自客户端/浏览器),可以使用配置部分来阻止它。在站点根目录的web.config中,您可以使用此配置禁用“images”子目录。如果查看applicationhost.config,您将看到此部分已配置为阻止客户端直接访问“bin”文件夹。您只需要在applicationhost.config或web.config(如下所示)中将“images”添加到该列表中。
(如果在applicationhost.config中根本没有看到任何配置,则表示您需要使用“添加/删除程序”或Web平台安装程序在IIS中安装requestFiltering功能)。
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments applyToWebDAV="true">
<add segment="images" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>