Как защитить вход в систему и членскую область с сертификатом SSL?

Фон: у Меня есть asp.net webapplication проект, который должен содержать общественность и членскую область. Теперь я хочу реализовать описание SSL для обеспечения коммуникации между клиентом и сервером. (В университете у нас есть незащищенная беспроводная сеть, и можно использовать wlan сниффера для чтения имени пользователя/пароля. Я не хочу иметь эту проблему безопасности для своего приложения, таким образом, я думал о ssl описании),

Приложение работает на IIS 7.5. Действительно ли возможно иметь одно веб-приложение, которое имеет незащищенные страницы (как общественное место) и охранявшая территория (как членская область, которая требует входа в систему)? Если да, как может я relealise коммуникация между ними также области?

Пример: Мое веб-приложение размещается на http://foo.abc. У меня есть страницы как http://foo.abc/default.aspx и http://foo.abc/foo.aspx.

В том же проекте существует страница как /member/default.aspx который защищен входом в систему на странице http://foo.abc/login.aspx.

Таким образом, я должен был бы реализовать SSL для страницы /login.aspx и все страницы в /member/

Как я могу сделать это? Я просто узнал, как создать сертификаты SSL в IIS 7.5 и как добавить такую привязку к веб-приложению. Как, как я могу сказать свое веб-приложение, которым страницу нужно назвать с https а не с http. Какова наиболее успешная практика там?

6
задан osyan 31 July 2012 в 07:39
поделиться

3 ответа

Отсюда Как использовать HTTPS в приложении ASP.Net

После установки / установки SSL вы хотите сделать какое-то перенаправление на странице входа на https: //. Затем какая бы страница ни была отправлена ​​пользователю после проверки, это может быть просто http: //.

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender

    If Request.IsSecureConnection = False And _ 
        Not Request.Url.Host.Contains("localhost") Then 

        Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://")) 
    End If  End Sub

Это может быть проще реализовать на главной странице или просто на всех страницах, которые вам требуется https. Проверяя "localhost", вы избегаете получения ошибки в тестовой среде (если у вашего тестового сервера нет другого имени , чем проверьте это: { {1}} "mytestservername").

3
ответ дан 16 December 2019 в 21:38
поделиться

Я не работаю с .net, но у нас есть сайты с похожей настройкой, где некоторые страницы не зашифрованы и обслуживаются по http, а некоторые страницы обслуживаются по https. Вот некоторые вещи, которые мы сделали... надеюсь, они будут полезны.

  1. Вам нужно каким-то образом передать конфигурацию вашему коду, чтобы он знал базовый URI как http, так и https части. Например, если ваш сервер foo.bar, вам нужно, чтобы ваш код знал, что безопасные страницы находятся по адресу https://foo.bar:xxx/..., а небезопасные страницы по адресу http://foo.bar/....

  2. Вы можете настроить свой сервер с некоторыми перенаправлениями, чтобы облегчить себе жизнь. Например, если в конфигурации сервера в области порта 80 вы перенаправите /xxx на порт 443 /xxx, то на ваших http-страницах вы сможете использовать только URL типа /xxx и не включать базовый URI. И наоборот, вы можете настроить в конфигурации порта 443 перенаправление /yyy на порт 80 /yyy, тогда на ваших https страницах вы можете просто использовать относительный URL, например /yyy

  3. Перенаправление между http и https страницами: вы не можете перенаправить пост, поэтому вы должны использовать базовый URI для http или https страниц в элементе формы. Т.е. на ваших http-страницах, если вы отправляете пост на https, вы должны указать базовый URI https в атрибуте action элемента формы - это причина пункта 1 выше.

  4. Очевидно, что и http, и https код должен проверять cookies, чтобы определить, вошел ли пользователь в систему, но вы хотите, чтобы на https страницах проверялись защищенные cookies - те cookies, которые браузер будет отправлять только при https соединении. Ваши обычные файлы cookie могут быть перехвачены.

  5. AJAX - здесь есть свои сложности. Вы не можете делать междоменный AJAX из-за модели безопасности Javascript. Это означает, что если вы находитесь на http, вы не можете сделать AJAX на https, или наоборот; смена портов рассматривается браузером как разные домены. Существуют обходные пути, например, использование скрытых iframe и т.д., но эти решения довольно сложны и часто имеют дыры в безопасности.

3
ответ дан 16 December 2019 в 21:38
поделиться

Небольшое предупреждение: вам не следует использовать самозаверяющий сертификат на рабочем сайте. В идеале вы должны получить его от доверенного ЦС (центра сертификации). Крупные компании - Verisign и Thwate, но есть и другие, более дешевые CA.

Если вы используете самозаверяющий сертификат на действующем сайте, ваши пользователи получат неприятное предупреждающее сообщение с вопросом, хотят ли они продолжить.

Что касается перенаправления пользователей в области https, я обычно просто пересылаю страницы, которые хочу защитить (например, если пользователь переходит на http://domain.com/login.aspx , я ' Я немедленно перенаправляю запрос на https://domain.com/login.aspx ( Response.Redirect (...) ), а затем вынимаю их из защищенной области SSL один раз. они успешно аутентифицированы.

2
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: