理解IIS中的路径规范化

理解IIS中的路径规范化,iis,iis-10,directory-traversal,Iis,Iis 10,Directory Traversal,我想在我的IIS网站中禁用目录遍历,比如example.com/page/。/其他页面(甚至是真实页面)。我尝试过使用自定义响应进行请求过滤和URL重写 关于请求筛选的Microsoft文档实际上使用了。作为: 下面的示例Web.config文件将拒绝访问三个URL序列。第一个序列防止目录遍历,[…] ?) 它在请求生命周期中何时发生 如何在不打开安全漏洞的情况下成功阻止以下序列。,/和/ 互联网搜索只想告诉我旧版IIS中存在一个circa-2000漏洞,或者如何启用带有点的MVC路由 调试说

我想在我的IIS网站中禁用目录遍历,比如
example.com/page/。/其他页面
(甚至是真实页面)。我尝试过使用自定义响应进行请求过滤和URL重写

关于请求筛选的Microsoft文档实际上使用了
作为:

下面的示例
Web.config
文件将拒绝访问三个URL序列。第一个序列防止目录遍历,[…]


?)
  • 它在请求生命周期中何时发生
  • 如何在不打开安全漏洞的情况下成功阻止以下序列<代码>。
  • /
    /
    互联网搜索只想告诉我旧版IIS中存在一个circa-2000漏洞,或者如何启用带有点的MVC路由

    调试说明:如果使用
    curl
    测试此行为,请确保添加该选项,这样它就不会在客户端执行规范化。一些浏览器似乎也在进行客户端规范化。

    用法说明:我名义上正试图关闭
    example.com/clubs baby seals//关于我们
    以免有人将链接的成功加载视为对海豹虐待的认可。

    可能是任何人在改变它,最终从浏览器到HTTP.sys或IIS。重要的一点是用户是否有权访问他们最终获得的资源。如果用户已经有访问权限,那么就不会有安全漏洞,因为他们可以在浏览器中输入规范化后的最终地址。使用“..”点不会显示任何其他信息


    另一方面,如果你真的想知道是谁改变了路径,我会亲自做一些网络跟踪和FREB日志记录,看看每个阶段会发生什么。我不知道答案。

    虽然我不知道(1)和(2)的具体答案,但(3)原来的预规范化URI路径在
    UNENCODED_URL
    服务器变量中可用。这样就可以对其运行URL重写规则: