Пользователи IIS7.5 ASP.NET MVC, использующие странные URL: /(F(1xe9eXIxPz)

Мы получаем сообщения от небольшого числа пользователей о том, что они сталкиваются с очень странными путями в нашем веб-приложении, в форме:

https://www.example.com/(F(1xe9eXIxPzMALrZu6xd_6LBxDDlJI3lH2lkSvREZZKCfPBH20SF5EcNql6uXvyBVLgiNZshp9vXxaEzuLa5zm8c4ruux6gqu3B90eXGNmKDypu-wKR4OW_GwQctfjCdoxFYcDlLwglfE6rICL3JGkxtq4jgxggiQgJopKZGzLJ_PF2lHY7NqXya8eDshkP9o8QFDad47U54TMsxEwKCki2xPV9d9VxxjmDhNg7aQb38X_OTxHtf9I7AxiccanJf4m0bo0ceEJ70Mv20XYaMSlA2))/some/path

(Примечание: я изменил случайные символы в этом случае в случае какой-то утечки безопасности, поэтому не пытайтесь декодировать его - хотя, если это может быть полезным, пожалуйста, скажите мне, что я ищу, чтобы я мог сделать это на реальном URL).

Это вызывает 400 в IIS, но IIS не регистрирует его, поэтому я понятия не имею о реферере и т. Д.

Из того, что описывают наши пользователи, это вызвано на этом шаге:

return Redirect("/some/path");

(который находится в ASP.NET MVC 2 Controller Action).

Сайт работает на IIS 7.5 по SSL.

Есть идеи? Я никогда не видел ничего подобного:s

Обновить:

У меня также установлен ISAPI rewrite со следующим .htaccess:

RewriteEngine on
AllowOverride All

# Ensure that all traffic on the live domain is enforced as HTTPS
RewriteCond %{HTTP:Host} (.*)
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (.*)
RewriteRule .? https://%1%2 [R,L]

2 ответа

Решение

Посмотрите, как понять, как работает ASP.NET Cookieless Feature:

В версии 2.0 анонимная идентификация и проверка подлинности с помощью форм также используют эту функцию. Теперь URL-адрес может выглядеть следующим образом: http://mysite.com/MyWebApplication/(A(XXXX)S(XXXX)F(XXXX))/home.aspx

и далее вниз:

F (XXXX): это билет проверки подлинности с помощью форм.

Возможно, некоторые из ваших клиентов блокируют файлы cookie.

РЕДАКТИРОВАТЬ: Тем не менее, тот URL, который вы опубликовали, кажется чрезмерно длинным. Возможно, по какой-то причине внутреннее устройство MVC или перезапись URL-адреса плохо с ним взаимодействуют.

Вопрос MVC2 Cookie-сессия Проблема с использованием POST может быть несколько связана.

РЕДАКТИРОВАТЬ 2: Эта тема, кажется, также связана с вашей проблемой: http://forums.asp.net/t/1612673.aspx. Автор упоминает, что

некоторые пользователи сообщают об ошибках http 400

потому что, по-видимому

некоторые пользователи получают токены авторизации форм, которые длиннее обычного, так как они передаются в URL-адресе, что делает длину URL-адреса более длинной, чем IIS примет

Может быть длинный выстрел, но стоит попробовать.

У нас была точно такая же проблема при просмотре нашего сайта с iPad или планшетов Surface. Проверка подлинности с помощью форм переключается в режим "UseUri".

В соответствии с http://msdn.microsoft.com/en-us/library/1d3t3c61(v=vs.90).aspx режим по умолчанию для хранения запроса проверки подлинности в проверке подлинности с помощью форм - "UseDeviceProfile", который, по-видимому, проверяет, поддерживает ли устройство печенье или нет.

Затем он говорит: "Для устройств, которые поддерживают файлы cookie, не делается никаких попыток определить, включена ли поддержка файлов cookie". Возможно, кто-то может помочь мне понять это предложение:)

В любом случае мы решили эту проблему, заставив проверку подлинности с помощью форм использовать файлы cookie в файле web.config:

<authentication mode="Forms">
  <forms cookieless="UseCookies" loginUrl="~/Login" timeout="2880" />
</authentication>
Другие вопросы по тегам