【问题标题】:IIS: Hidden segments and custom errors clashIIS:隐藏段和自定义错误冲突
【发布时间】:2016-06-26 23:40:32
【问题描述】:

我需要保护/app 目录及其文件不被探测。我尝试在web.config 文件中使用<hiddenSegment>,它工作得很好……除了当我添加一个IIS 自定义错误页面时,它不起作用。

应用结构

.
├── app
│   ├── template
│   │   ├── footer.php
│   │   ├── header.php
│   │   └── index.php
│   ├── error-handler.php
│   ├── footer.php
│   └── header.php
├── template
│   ├── css
│   └── js
└── web.config

需要隐藏整个/app 目录;它的内容必须是安全的,不会被探测到。

web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <httpErrors errorMode="Custom">
            <remove statusCode="404" />
            <error statusCode="404" prefixLanguageFilePath="" path="/app/error-handler.php" responseMode="ExecuteURL" />
            <remove statusCode="403" />
            <error statusCode="403" prefixLanguageFilePath="" path="/app/error-handler.php" responseMode="ExecuteURL" />
        </httpErrors>
        <security>
            <requestFiltering>
                <hiddenSegments>
                    <add segment="app" />
                </hiddenSegments>
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>

我一直在努力尝试隐藏/app 目录并使IIS 为/app/error-handler.php 中的错误处理程序提供服务。非常感谢任何帮助。

【问题讨论】:

  • &lt;directoryBrowse&gt; 标签用于目录浏览,您可能根本不需要隐藏段。
  • @LexLi 不,这不是我想要的。目前,有人可以发出这样的 HTTP GET 请求:GET /scripts/error.php?404;http://www.example.com/some-seo-friendly-url HTTP/1.1,它会返回与GET /some-seo-friendly-url HTTP/1.1 相同的结果。这就是我要禁用的。另外,像GET /scripts/header.php HTTP/1.1这样的请求。
  • @LexLi 是否可以使用权限实现相同的结果?我基本上不希望除了 IIS 之外的任何人都能够执行这些文件。

标签: php iis web-config custom-error-pages


【解决方案1】:

如何在 app 文件夹 (myFolder) 下创建另一个文件夹并将除 error_handler.php 之外的所有内容移动到该新文件夹 (myFolder) 中并相应地调整 Hiddensegments 标记。这可能需要对您的代码进行一些调整。

或者只是将 error-handler.php 移到上一级并相应地调整 CustomErrors 标记。不确定它是否会破坏任何东西。

【讨论】:

  • 我可以,但这只能解决部分问题,并不能解决真正的问题。
猜你喜欢
  • 1970-01-01
  • 2012-10-26
  • 2014-01-29
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 2019-11-27
  • 2018-08-06
  • 2015-02-12
相关资源
最近更新 更多