【发布时间】: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 中的错误处理程序提供服务。非常感谢任何帮助。
【问题讨论】:
-
<directoryBrowse>标签用于目录浏览,您可能根本不需要隐藏段。 -
@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