Visual Studio: 2019 .NET Core: 2.2 Язык: C#
Проблема: я создал .NET Core API с конечной точкой GET, украшенной маршрутизацией атрибутов, которая принимает строковый параметр, и здесь я получаю ответ 404.7 для некоторых ключевых слов, например. ".master", ".cs", ".mdf" и т. д.
Неработающий код:
Путь доступа: http://baseUrl/api/test/test.master
[HttpGet("{userName}")]
public ActionResult<string> Get(string userName)
{
return userName;
}
Рабочий код:
Принятие имени пользователя в качестве строки запроса работает отлично. Это лучшая практика?
Путь доступа: http://baseUrl/api/test?userName=test.master
[HttpGet]
public ActionResult<string> Get(string userName)
{
return userName;
}
Я знаю, что это расширения файлов, к которым не разрешен доступ в качестве ресурсов. Но есть ли другой способ заставить его работать, кроме принятия параметра в качестве строки запроса. Могу ли я заставить его работать с маршрутизацией атрибутов?
Я попытался воспроизвести эту проблему и в .NET Framework, но с той же ошибкой.
Любое руководство будет оценено.
.mdf
или.cs
в журналах веб-сервера, я бы сходил с ума и бежал, чтобы проверить, не взломан ли он. Рабочие веб-серверы, такие как IIS, отклоняют запросы на определенные типы файлов еще до того, как они перенаправят запрос в приложение. Как и брандмауэры. Как вы размещаете свое веб-приложение и почему такие пути разрешены или ожидаемы в первую очередь? - person Panagiotis Kanavos   schedule 13.09.2019404.7
to-deny" title="http error 404 7 not found модуль фильтрации запросов настроен на отказ"> stackoverflow.com/questions/13455939/ - person Nkosi   schedule 13.09.2019.mdf
или.cs
? Если вы хотите поддерживать такие имена без ущерба для безопасности, вам придется изменить API, например, принять POST для этой операции, использовать идентификатор пользователя/токен вместо имени пользователя (в конце концов, разрешение имени подвергает вас анализу учетной записи), получить имя пользователя из заголовка и т. д. - person Panagiotis Kanavos   schedule 16.09.2019http
или неавторизованные/неавторизованные вызовы такого API. - person Panagiotis Kanavos   schedule 16.09.2019.mdf
или.cs
, но есть несколько реальных пользователей, имена которых заканчиваются на .master, что вызывало проблему, аtest.master
является допустимым именем, потому что у этого пользователя есть некоторые права администратора, и они хотят различать Это. И да, мне не нужно делать эту конечную точку POST, поскольку я могу решить эту проблему, приняв параметр userName из строки запроса. Спасибо за вашу помощь. - person Mahesh More   schedule 17.09.2019