Пользователи 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>