Несколько веб-сайтов и незаконные «межсайтовые» запросы

StackOverflow https://stackoverflow.com/questions/1487864

  •  18-09-2019
  •  | 
  •  

Вопрос

У меня есть два сайта IIS, указывающие на разные физические папки.Это должно иметь возможность дифференцировать web.config, а файлы и сборки, используемые для базы данных сайтов, установлены на один и тот же экземпляр для обоих сайтов в web.config, настраиваемые для запуска с разных частей, настольная ставка такая:

  • /sitecore/content/home/default

  • /sitecore/content/home/intranet

Все идет нормально.

Проблема в том, что я могу получить контент, не принадлежащий реальному сайту, введя его полный путь.Т.е.

http://www.default.com/sitecore/content/home/intranet.aspx <-- этого нельзя допускать, поскольку www.default.com настроен с /sitecore/content/home/default как корень.

Есть ли какой-либо встроенный механизм, позволяющий запретить это, или мне нужно создать подкласс itemresolver, чтобы сделать «межсайтовые» запросы незаконными.

Это было полезно?

Решение

Это как-то связано с тем, как Sitecore разрешает элементы. Я нашел 3 разных URL-адреса для каждого элемента.Например, скажем, у меня есть следующая структура:

-sitecore
  -content
    -home
      -page1

Я могу получить доступ к странице 1 либо через:

  • http://mysite/sitecore/content/home/page1.aspx
  • http://mysite/page1.aspx
  • http://mysite/home/page1.aspx

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

Я предполагаю, что, поскольку у вас есть два отдельных файла web.config, вам также придется разделить разделы конфигурации Sitecore.Итак, что мы можем сделать, так это создать процесс конвейера, который выполняется как часть конвейера начала HTTP-запроса (в файле web.config как /configuration/sitecore/pipelines/httpRequestBegin), создавая по одному процессу для каждого сайта и обновляя соответствующий файл web.config.Когда этот процесс вызывается, он может создать виртуального пользователя, который принадлежит к группе, которая ограничивает доступ к сайту, запрошенному пользователем.

Есть некоторый код здесь который показывает вам, как создать виртуального пользователя:

И здесь на трубопроводах:

Надеюсь это поможет :-)

Другие советы

Что ж, если элемент интрасети (и ниже) защищен системой безопасности Sitecore, это не должно быть проблемой и доступ к нему невозможен :)

Если вы не можете справиться с этим с помощью безопасности, я бы выбрал ItemResolver.

Ваше здоровье

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top