我想,以防止用户通过他们的浏览器访问特定类型的文件。 例如,IIS服务器块访问的.config和默认的.vb文件,赋予错误消息“的类型是否要求不提供服务,因为它已被明确禁止的网页”,我想添加其他文件类型此行为。
有什么我可以添加到应用程序的web.config文件? 我宁愿不使用阻断目录访问处理它<authorization>
元素。
我想,以防止用户通过他们的浏览器访问特定类型的文件。 例如,IIS服务器块访问的.config和默认的.vb文件,赋予错误消息“的类型是否要求不提供服务,因为它已被明确禁止的网页”,我想添加其他文件类型此行为。
有什么我可以添加到应用程序的web.config文件? 我宁愿不使用阻断目录访问处理它<authorization>
元素。
在IIS 7+,请求过滤可以在应用级上完成。 添加下面的代码在web.config中:
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension=".vbs" allowed="false" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
对于IIS 6,上述不会工作,但你可以模仿存在类似的.cs文件页面的默认阻止行为,虽然你可能不得不作出在服务器端的变化。 首先,添加以下到您的应用程序的web.config:
<system.web>
<httpHandlers>
<add path="*.vbs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
</httpHandlers>
</system.web>
如果asp.net设置为处理该文件类型,像的.cs,那么你就大功告成了。 但是,如果你的意思是阻止的文件类型由IIS处理,而不是asp.net(像.VBS),这是不够的。 你将不得不在IIS管理器中修改文件扩展名映射为显示在这里 。
文件夹中为什么存储非网络服务提供的文件通过IIS呢? 我通常是这样的:
\www.mywebsite.com\wwwroot\
\www.mywebsite.com\secureimages\
\www.mywebsite.com\virutaldirectories\
在IIS我的wwwroot是我的网站的根,我的MVC应用程序是通过secureimages目录服务图像的This.File ,因此图像不可用,我就必须通过编程允许它。 我会假设你的程序也提供文件服务,如果是这样,这些文件不需要以任何方式IIS可以直接作为文件可用。
您可以尝试location
Web.Config中的节点
<location path="...">
<system.web>
<authorization>
<!-- Order and case are important below -->
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
链接: http://msdn.microsoft.com/fr-fr/library/b6x6shw7.aspx
如果使用的是IIS 7这可以在对ApplicationHost.config水平来完成。
http://www.iis.net/learn/get-started/planning-your-iis-architecture/introduction-to-applicationhostconfig
请求筛选部分: http://www.iis.net/configreference/system.webserver/security/requestfiltering
文件将显示为404返回码。
*注:由于此配置是在根级别,修改适用于该服务器上运行的所有应用程序。
你必须设置IIS运行通过.NET管道那些文件的请求。 一个更好的策略是只阻止IIS的项目开始。 这样一来,你没有运行的开销,比方说,通过.NET管道PDF文件只是为了阻止该文件。
请求筛选应该这样做。 它没有明确的扩展。 你可以在URL中使用正则表达式。
IIS 7.0请求筛选和URL重写