我可以在IIS的文件夹中加上+号吗?

Jer*_*gan 2 asp.net iis internet-explorer url-rewriting url-routing

我很确定无法做到这一点,但我正在寻找一种黑客或方法将+放在文件夹名称中,比如

http://www.mysite.com/cats+do​​gs/Default.aspx

我正在使用IIS 7,并尝试创建一个虚拟目录来实现这一点,但它没有用.我不允许将%2B放在资源管理器文件夹或虚拟文件夹名称中.

任何想法我怎么能破解它使它工作?我们已经打印了带有网址的小册子,并且想知道是否有某些方法可以将其替换或者可以做到的一些技巧.

编辑:我能够通过创建一个带有+的虚拟文件夹来解决这个问题,然后重定向到一个URL,该URL指向带有内容的虚拟目录.

Mit*_*eat 7

IIS 7.0在集成模式下中断ASP.NET 2.0应用程序的更改

以下是该页面的相关摘录,其中显示了变通方法/修复方法.

请求限制和URL处理由于IIS处理传入请求及其URL的方式有其他限制,因此会产生以下更改.

11)默认情况下,拒绝路径中包含未编码的"+"字符的请求URL(不是查询字符串)

您将收到HTTP错误404.11 - 未找到:请求筛选模块配置为拒绝包含双转义序列的请求.

发生此错误的原因是IIS默认配置为拒绝对URL进行双重编码的尝试,这通常表示尝试执行规范化攻击.

解决方法:

1)需要在URL路径中使用"+"字符的应用程序可以通过在应用程序的web.config中的system.webServer/security/requestFiltering配置部分中设置allowDoubleEscaping属性来禁用此验证.但是,这可能会使您的应用程序更容易受到恶意URL的攻击:

<system.webServer> 
    <security> 
            <requestFiltering allowDoubleEscaping="true" /> 
    </security> 
</system.webServer>
Run Code Online (Sandbox Code Playgroud)


Tj *_*lie 5

做一个url-rewrite你可能会有运气.这可以在web.config中或使用httpmodule轻松完成.

看起来你仍然需要为你的+字符问题使用下面提到的空间或IIS修复,但为了将来的一些灵活性,你总是可以包含用于将URL映射到文件的URL重写.

  <httpModules>
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </httpModules>

  <rewriter>
    <rewrite url="~/cats dogs/Default.aspx" to="~/MyRealFile.aspx" />
  </rewriter>
Run Code Online (Sandbox Code Playgroud)