Добавить SSL * только * в определенную папку - PullRequest
2 голосов
/ 07 января 2012

Я хочу перенаправить пользователей на защищенный сервер SSL, когда они получают доступ к разделу «Учетная запись» сайта, который будет содержать формы для профилей пользователей, настроек и т. Д. Однако я не хочу, чтобы пользователи имели доступ костальная часть сайта на сервере SSL.Из-за того, как я кодировал свои шаблоны, в качестве примера мои пути установлены как <a href="/about">.Если они находятся в разделе «Учетная запись» и щелкают ссылку в разделе «О программе», они все равно будут находиться в безопасном соединении https :.Очевидно, я могу просто жестко кодировать ссылки для ссылки на сервер http: //, но я ищу альтернативы.

До сих пор у меня в .htaccess было следующее, и оно работает, но ямне интересно, если это более ресурсоемким, чем это должно быть?Лучше ли жестко закодировать ссылки на другие разделы, не относящиеся к аккаунту, или это можно сделать с помощью .htaccess, чтобы это сделать?

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond $1 ^(account) [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} on
RewriteCond $1 ^(about|terms|products) [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Кроме того, если бы я хотел предотвратитьдоступ к домашней странице через https: // как мне добавить это в мой файл .htaccess?

1 Ответ

1 голос
/ 07 января 2012

Я бы на самом деле предложил не использовать для этого правила перезаписи.

Проблема с правилами перезаписи, которые превращают http запросы в https запросы, заключается в том, что они фактически являются перенаправлениями. Это означает, что для каждого запроса http, который должен быть превращен в запрос https, браузер сначала собирается выполнить полный запрос http (включая содержимое, файлы cookie, кроме защищенных), получить код перенаправления от сервер, а затем снова отправьте запрос на https перезаписанный URL.

Хотя это удобно, если вы полагаетесь на это, вместо того чтобы убедиться, что ссылки на вашем сайте, предназначенные для https разделов, действительно используют https, будет трудно определить, когда эти ссылки неправильное перенаправление на вариант http.

Типичные последствия:

  • предупреждения о смешанном контенте, если вы встраиваете что-либо, используя http, связанный позже, автоматически и прозрачно превращается в https, что плохо; и
  • возможная утечка данных.

Вместо этого я бы предложил, чтобы вы не использовали автоматическое переписывание / перенаправление, и чтобы разделы, которые должны быть доступны только через HTTPS, вообще не были доступны в обычном варианте HTTP (т. Е. http://yourhost/account должен возвращать 404 с ): это по крайней мере заставит вас заметить, что вы неправильно связались, и поможет вам определить, где у вас могут возникнуть проблемы с безопасностью. В конечном счете, хотя они и имеют одно и то же имя хоста, сайт http и сайт https могут иметь два разных пространства URL-адресов: в этом контексте это неплохая вещь.

Я вижу только один случай, когда перезаписи с http до https действительно полезны, когда вы хотите убедиться, что точка входа пользователя на ваш сайт перенаправлена.

Перезапись с https на http не представляет этой проблемы, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...