IIS: столкновение скрытых сегментов и пользовательских ошибок

Мне нужно обеспечить /app каталог и его файлы от зондирования. Я пытался с помощью <hiddenSegment> в web.config файл, и он работает хорошо … за исключением того, что, когда я добавляю пользовательскую страницу ошибок 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, Буду признателен за любую оказанную помощь.

3

Решение

как насчет создания еще одной папки под папкой приложения (myFolder) и перемещения всего, кроме error_handler.php, в эту новую папку (myFolder) и соответственно измените тег Hiddensegments. Это может потребовать внесения некоторых изменений в ваш код.

Или просто переместите error-handler.php на один уровень вверх и соответственно измените тег CustomErrors. Не уверен, что это что-нибудь сломает.

0

Другие решения

Других решений пока нет …