Параметры X-Frame ПОЗВОЛЯЮТ — не работает, если не использовать www

#x-frame-options

#параметры x-frame

Вопрос:

Angular 7, IIS 7, C # .NET Core, FireFox

Для моего сайта:https://www.example.com , x-frames завершаются с ошибкой, если пользователь использует https://example.com (обратите внимание на отсутствие www)

Заголовок, который я создаю, таков: Headers.Add(«X-frame-options», «РАЗРЕШИТЬ ИЗhttps://www.example.com ,https://example.com«);

Я пробовал множество итераций этого, и независимо от того, что я пытаюсь, я не могу заставить это работать для обоих:https://www.example.com
https://example.com

Ответ №1:

Смотрите спецификацию:

Подстановочные знаки или списки для объявления нескольких доменов в одном операторе ALLOW-FROM не разрешены

и шаблон проектирования использования и пример сценария для параметра РАЗРЕШИТЬ ИЗ

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

например, используя строку запроса в URL.

  1. Сервер проверяет, что имя хоста соответствует его критериям, так что странице разрешено оформляться целевым ресурсом. Это может, например, произойти при поиске в белом списке доверенных доменных имен, которым разрешено создавать рамки для страницы. Например, для кнопки Facebook «Мне нравится» сервер может проверить, совпадает ли предоставленное имя хоста с именами хостов, ожидаемыми для этой кнопки «Мне нравится».

  2. Сервер возвращает имя хоста в «X-Frame-Options: ALLOW-FROM», если на шаге # 2 были выполнены надлежащие критерии.

  3. Браузер применяет заголовок «X-Frame-Опции: РАЗРЕШИТЬ-ИЗ».


Обратите внимание, что это X-Frame-Options заменяется Политикой безопасности содержимого (CSP), где директива frame ancestors позволяет вам предоставлять список.


Тем не менее, на самом деле не имеет смысла размещать один и тот же веб-сайт на www.example.com и example.com . Выберите один из них как канонический и выполните 301 перенаправление с другого на него.

Тогда вам нужно разрешить только канонический в X-Frame-Options .

Комментарии:

1. Я не хочу использовать подстановочные знаки, потому что мой тестовый сайт ‘test.example.com ‘, и это потенциально может привести к загрязнению моей тестовой системы. Вот почему я избегал подстановочного знака. Я на самом деле использую CSP, но FireFox, похоже, не считает, что этого достаточно? FireFox жалуется, если я не использую X-Frame-Options Когда я изначально создавал сайт, это было www.example.com и люди обленились, набрали ‘example.com ‘. Итак, мое решение состояло в том, чтобы просто добавить заголовок host для ‘example.com ‘. I

2. После ввода URL rewriter для перенаправления всех пользователей из примера. Com к example.com , затем помещая только example.com в моем заголовке «РАЗРЕШИТЬ-ИЗ» это исправило проблему.