Navin Ranjan Ответов: 1

.. /../.. / тест выдает ошибку 404 файл или папка не найдена


У меня есть приложение, ASP.NET MVC, размещенном на веб-сервер с URL http://10.26.14.99/projectA т. е. обстановка1 и одного приложения хранится в другой веб-сервер с URL https://projectA.test.com т. е. environment2.

Теперь для environment1, когда я вхожу http://10.26.14.99/projectA/../../../../test он показывает URL-адрес как http://10.26.14.99/test с ошибкой 404 "файл или папка не найдена", но в то же время для environment2, когда я ввожу https://projectA.test.com/../../../../test затем он показывает URL-адрес как https://projectA.test.com/test и это также приводит меня на страницу входа в систему, которая ожидается.

Может ли кто-нибудь сказать мне, что нужно сделать в environment1, чтобы получить тот же ожидаемый результат, что и в environment2?

Что я уже пробовал:

1. Я попробовал настройки как переписать, httperrors для обработки 403 и пользовательских ошибок для обработки других ошибок.
2. я также попытался создать обработчик для шаблона"*../*", чтобы вызвать ошибку, если URL содержит"../", но это также не сработало.

Я думаю, что это даже не ударяет по моей кодовой базе приложения в случае environment1.

1 Ответов

Рейтинг:
1

OriginalGriff

А чего вы ожидали?

http://10.26.14.99/projectA/../../../../test

В пути " .. " - это относительный спецификатор папки: он говорит "папка выше".
Итак, вы просите
root / projectA / folder above (giving root) / folder above root / folder above that / folder above that / test

Вы не можете использовать относительный спецификатор для перехода выше корневой папки!
Таким образом, вы получаете 404, правильно.


Navin Ranjan

Это проверка безопасности приложения, где пользователь может ввести что угодно в URL-адрес. Это тип угрозы безопасности, называемый атакой обхода каталогов.
Я не ожидаю, но я не могу остановить пользователя, чтобы ввести .. / .. / в url.
Итак, я пытаюсь добиться здесь того, что если пользователь вводит ../ в url-адрес, то он должен либо перенаправить его на пользовательскую страницу ошибок, либо перенаправить на страницу входа.

Navin Ranjan

Когда я войду "http://10.26.14.99/projectA/../../../../test" в url-адресе, на который он перенаправляется "http://10.26.14.99/test" это означает, что он ищет файл или папку с именем test в 10.26.14.99, который не существует, поэтому получает ошибку 404. Я не хочу ошибку 404, я хочу показать пользовательскую страницу ошибки или перенаправить пользователя на страницу входа. Есть ли способ сделать это?