Смешанный http / https сайт - PullRequest
       8

Смешанный http / https сайт

7 голосов
/ 17 апреля 2009

До сих пор мои развертывания https обычно включали в себя простую блокировку всего сайта с помощью https и предоставляли перенаправление http-to-https на веб-сервере.

Теперь я планирую создать один сайт ASP.NET MVC (в облаке), который будет содержать страницы http и https. Таким образом, на сайте будет 2 концептуальные (не физические) зоны, обеспечивающие как безопасные, так и незащищенные запросы.

Что касается конфигурации, я настроил входные порты для 80 и 443, и сайт принимает оба запроса.

Можно ли как-нибудь переключить протокол на https для любого вызова, который переходит к действию в безопасной зоне? Например, что могут делать фильтры действий.

Большое спасибо.

edit: Обратите внимание, что вся идея этого заключается в том, чтобы избегать использования абсолютных URL-адресов в атрибуте действия формы из-за проблем с переносимостью и потому, что пользователь не увидит https: // assurance визуальные подсказки в браузере.

P

Ответы [ 2 ]

7 голосов
/ 18 апреля 2009

Возможно, вы захотите взглянуть на сборку фьючерсов MVC от Microsoft , доступную для загрузки здесь.

У этого есть FilterAttribute, RequireSslFilterAttribute, который позволяет вам легко помечать методы действия в вашем контроллере, которые требуют SSL - например,

[RequireSsl(Redirect=true)]
public ActionResult LogOn()
{
  return View();
}

Необязательный параметр redirect приведет к тому, что запрос будет перенаправлен на тот же URL-адрес, но через https вместо http, если требуется.

ПРЕДУПРЕЖДЕНИЕ. Однако, как отмечает Дэниел, к тому времени, когда вы выполните это действие, может быть уже слишком поздно, если данные были опубликованы в небезопасной версии страницы - они уже потенциально могут быть скомпрометированы, поэтому вам все равно нужно проявлять осторожность при использовании этого и убедитесь, что все конфиденциальные данные отправляются через https. (Я только что заметил ваш комментарий к Дэниелу, вы, очевидно, понимаете это, я оставлю здесь предупреждение для всех, кто наткнется на это!)

РЕДАКТИРОВАТЬ: Как указывает Люк, в MVC2 этот атрибут теперь является частью базовой структуры и переименован в [RequireHttps]

0 голосов
/ 17 апреля 2009

Можно ли как-нибудь переключить протокол на https для любого вызова, который переходит к действию в безопасной зоне?

Краткий ответ: нет, когда запрос поступил через http, он уже потенциально был скомпрометирован. Вы можете потребовать, чтобы определенные вызовы поступали через HTTPS (не знаете, как это сделать, поскольку я некоторое время не делал ASP.Net) и отправлять сообщение об ошибке, если этого не происходит. Ключ должен решить, когда вы хотите, чтобы приложение совершило переход, т.е. во время входа в систему, и выберите HTTPS в качестве действия для этих форм. Это то, что вы имели в виду под «фильтрами действия»?

...