2009-02-19 3 views
8

Я читал, что страница, которая работает под соединением https, не может совместно использовать сеанс InProc (на основе файлов cookie) с другой страницей (или, что то же самое) обычный http. Мой сайт работает на Server 2003, IIS 6 и .Net 2.0.Как я могу совместно использовать сеанс asp.net между http и https

После некоторых экспериментов выяснилось, что страница, которая хранит данные в сеансе при подключении через https CAN, впоследствии может получить доступ к данным, даже если выполняется под обычным http.

Итак, возможно ли, или я должен идти и искать недостатки в конфигурации SSL?

ответ

15

От MSDN:

Когда пользователь перемещается вперед и назад между безопасным и общественными местами, в ASP.NET сгенерированных куков сессии (или URL, если вы включили кук-менее состояние сеанса) перемещается вместе с ними в plaintext, но аутентификация cookie никогда не передается через незашифрованные HTTP-соединения до как свойство Secure cookie установлено.

Так в основном, куки могут быть переданы по обоим HTTP и HTTPS, если свойство Secure устанавливается в false.

я избегал этого вопроса, добавив в мой Global.asax файл:

void Session_Start(object sender, EventArgs e) 
{ 
    if (Request.IsSecureConnection) Response.Cookies["ASP.NET_SessionID"].Secure = false; 
} 

Это означает, что если куки сеанса создается через HTTP, он будет доступен только через HTTPS.

+0

Каковы последствия для безопасности этого отключения? –

1

Поиск проблемы не вызывает много болтовни об этом до сих пор, все еще глядя.

Редактировать: все в порядке.

Правильно кажется, что он будет работать нормально, если оба набора страниц находятся в одном приложении/веб-сайте.

Так что я бы продолжил и продолжал, чувствуя успокоение.

5

IIS настройки В окне свойств IIS на вкладке ASP -> Свойства сеанса, есть установка для «Нью-ID на безопасные соединения»

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

+0

Это похоже на то, что ушло в IIS7 - или, может быть, я просто не понимаю, где это будет найдено. Это для каждого сайта или глобального сервера? –

+1

@ chris-moschini В IIS 7 есть значок «Состояние сеанса» под «ASP.NET», поэтому, если вы там ищете, вы в нужном месте - и да, вы правы; эта настройка ушла. –

1

Если какое-либо из вышеперечисленных решений не работает, попробуйте это. Я пробовал это после исследования нескольких дней.

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    ... 
    ... 
    CookieSecure = CookieSecureOption.Never 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^