отключить ssl для конкретной страницы - PullRequest
1 голос
/ 16 июня 2011

ЭКОЛОГИЯIIS 6.NET 3.5 (веб-формы

По разным причинам я хотел бы включить SSL на уровне страницы.Это лучшая практика?на что мне следует обращать внимание при выполнении этого?Что считается самым безопасным способом сделать это?Я собирался сделать это следующим образом:

щелкните правой кнопкой мыши страницу -> перейдите к свойствам -> щелкните безопасность файла -> затем снимите флажок требовать защищенный канал.

Будет ли это влиять на другие страницы.Любая помощь будет велика спасибо

1 Ответ

1 голос
/ 16 июня 2011

Примечание : я использую .aspx для представления страниц ASP.Net, но в целом должно применяться следующее.

Даже если вы снимите флажок с безопасного канала, я полагаю, что он по-прежнему будет использовать безопасный канал (поскольку вы говорите, что SSL не требуется , но это не означает, что он по-прежнему не может использовать SSL ). Например, если вы переходите от secure_page1.aspx к unsecure_page2.aspx, он будет переходить по HTTPS (или по какому-либо протоколу на первой использованной странице) по умолчанию, то есть он не будет автоматически переключаться с HTTPS на HTTP при нажатии на определенную страницу. ссылка на сайт. Единственный способ сделать это - с помощью абсолютных URL-ссылок, т. Е. На https://www.mydomain.com/secure_page1.aspx, у вас есть ссылка на странице, которая говорит:

<a href="http://www.mydomain.com/unsecure_page2.aspx">Link to unsecure page</a>

Лично я бы порекомендовал, чтобы, если веб-сайту требуются какие-либо страницы SSL, чтобы весь сайт был SSL или все его разделы (скажем, система заказа) были SSL, а не отдельные страницы, которые должны быть защищены. Здесь важно помнить, что любая страница, которая будет отправлять критическую информацию, должна быть SSL до того, как пользователь введет форму. Например, не делайте Login.aspx не-SSL, а затем Login-Post.aspx (URL-адрес действия формы), поскольку это небезопасно.

Должен признать, что я выполнил проект, в котором веб-сайт представлял собой смесь HTTP и HTTPS, и мы хотели заставить браузер пользователя использовать протокол, который мы хотели. Основная причина этого заключается в том, что страницы HTTP более эффективны как на сервере, так и в браузере, чем HTTPS, поскольку шифрование добавляет накладные расходы к каждому запросу. Я использовал следующий (хакский) метод для этого проекта:

  1. Каждая переадресация / ссылка направляется через вспомогательный метод, который знает, какие страницы должны просматриваться как HTTP против HTTPS (это работает, только если вы используете какой-то серверный код, в противном случае вам придется обновить все ссылки вручную.)
  2. Если вы переходите от одного и того же протокола к одному и тому же протоколу (HTTP -> HTTP, HTTPS -> HTTPS), просто отправьте / перенаправьте как обычно (то есть, относительная ссылка)
  3. Если вы переходите от HTTP -> HTTPS, просто отправьте / перенаправьте как обычно, за исключением того, что для изменения протокола используйте абсолютный URL.
  4. Если навигация по HTTPS -> HTTP ... это действительно сложная задача, потому что большинство браузеров будут отображать предупреждающее сообщение для пользователя, если вы просто создадите ссылку на абсолютную ссылку с изменением протокола. Вы должны использовать перенаправление META-Refresh.

Я использую страницу помощника по перенаправлению redirect.aspx?url=unsecure_page2.aspx, которая в основном выдает метатег, например:

<meta http-equiv="refresh" content="0;url=http://www.mydomain.com/unsecure_page2.aspx">
You are being redirected to http://www.mydomain.com/unsecure_page2.aspx.
If you aren't redirected in 5 seconds, please click <a href="http://www.mydomain.com/unsecure_page2.aspx">here</a>.

Затем, когда вы находитесь на https://www.mydomain.com/secure_page1.aspx, и хотите перенаправить на unsecure_page2.aspx, вы используете помощника перенаправления:

See unsecure page <a href="redirect.aspx?url=unsecure_page2.aspx">here</a>!
...