我有一个IIS(Windows 2012)服务器上托pipe的ASP.NET(.Net 4)站点,并具有表单身份validation。 一切工作正常。
我现在想介绍一些静态内容–HTML“帮助文件” – 但我不希望这些是“深层链接”。 换句话说,这些页面只有在用户身份validation时才可用。
谷歌周围,我已经find了一些如何实现这一目标的参考。 所以在我的web.config中,我已经(删除所有不感兴趣的东西):
<compilation> <buildProviders> <add extension=".html" type="System.Web.Compilation.PageBuildProvider" /> <add extension=".htm" type="System.Web.Compilation.PageBuildProvider" /> </buildProviders> </compilation>
和
<handlers> <add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx,*.html" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> <add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx,*.html" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> </handlers>
…但我仍然可以访问HTML文件时,未经过身份validation。
任何人都可以提出什么是错的,我怎样才能保护静态的HTML内容?
确保IIS在集成模式下运行,以便以下工作。
下面是一个完整的Web.config文件,您可以将其放置在一个子文件夹中,并假定已经设置了身份validation(如窗体身份validation)。
或者,提取授权和处理程序部分,并将其添加到您的根Web.config 。
<?xml version="1.0"?> <configuration> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> <system.webServer> <handlers> <add name="HTML" path="*.html" verb="GET, HEAD, POST, DEBUG" type="System.Web.StaticFileHandler" /> <add name="CSS" path="*.css" verb="GET, HEAD, POST, DEBUG" type="System.Web.StaticFileHandler" /> <add name="JS" path="*.js" verb="GET, HEAD, POST, DEBUG" type="System.Web.StaticFileHandler" /> <add name="PNG" path="*.png" verb="GET, HEAD, POST, DEBUG" type="System.Web.StaticFileHandler" /> </handlers> </system.webServer> </configuration>
您可以指定位置标记,并将整个文件夹列入白名单。
<location path="YourFiles"> <system.web> <authorization> <allow users="?" /> </authorization> </system.web> </location>
你尝试过处理程序吗?
把它放在你的Web.Config文件中,看看是否有帮助。
PS未testing。