Наша среда хостинга диктует, что весь безопасный музыкальный трафик перемещается по определенному поддомену.
Мы используем .NET CMS Umbraco, который, насколько мне известно, не имеет никаких функций для «назначения» определенной страницы субдомену.
Сценарий такой:
Например
Запрос равен / page2 / page
301 перенаправление на https: // secure. {Http_host} / {request}
Последующий запрос должен быть проигнорирован (чтобы избежать цикла)
https: // secure.domain.com/page => БЕЗ ИЗМЕНЕНИЙ, остается прежним
https: // domain.com/page => субдомен вставлен, https://secure.domain.com/page
На мой взгляд, логика такова:
INPUT = Полный URL = http://www.domain.com/page
Если INPUT содержит HTTPS, тогда проверьте Полный URL, содержит ли он «безопасный»? Если ДА, ничего не делайте, если нет, добавьте «безопасный»
-
Обновление 1, 19 августа
Подумав об этом, я собрал два правила, которые являются шагом в правильном направлении:
Вот что я предлагаю:
Одно правило для принудительной передачи определенного трафика в защищенный домен:
<rule name="Force 'Umbraco' to secure" stopProcessing="true">
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_URI}" pattern="^/umbraco/(.+)$" ignoreCase="true" />
<add input="{HTTP_HOST}" negate="true" pattern="^secure\.(.+)$" />
</conditions>
<action type="Redirect" url="https://secure.{HTTP_HOST}/{R:0}" redirectType="Permanent" />
</rule>
Другое правило, которое затем удаляет безопасный домен, ожидает трафика в безопасном домене.
<rule name="Remove secure, expect for Umbraco" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^secure\.(.+)$" />
<add input="{REQUEST_URI}" negate="true" pattern="^/umbraco/(.+)$" ignoreCase="true" />
</conditions>
<!-- Set Domain to match environment -->
<action type="Redirect" url="http://staging.domain.com/{R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>
Это работает для одного каталога или группы файлов, однако мне не удалось добавить дополнительную логику в эти два правила. Например, у вас может быть 3 папки, которые необходимо защитить, я попытался добавить их как «Отвергнуть записи», но тогда перенаправление не происходит вообще.
Хммм! L
Предлагаемый вами подход с переадресацией, хотя и полезен, не дает тех же преимуществ безопасности, что и размещение https-адресов в нужных местах на ваших страницах.
Если пользователь отправляет запрос через HTTP и получает ответ перенаправления, то все отправленные им данные будут отправлены на ваш сайт в виде открытого текста. Вы получаете защиту только для информации, которую ваш сайт отправляет пользователю. Это лучше, чем ничего, но с этим нужно быть осторожным.
Например, если у вас есть форма входа в углу страницы http с целью формы http, то ваши пользователи будут передавать вам данные для входа в виде открытого текста, независимо от того, как вы ответите. С другой стороны, если ваша http-страница имеет ссылку на http-страницу входа, и вы перенаправляете ее на https-версию страницы, которая представляет форму с целевым URL-адресом https-формы, то это будет более безопасным.
Можете ли вы обслужить перенаправление для https://domain.com/page? (в отличие от http). Если вы можете дать ответ, то какое ограничение вы устраняете?