여러 웹사이트 및 "교차 사이트" 요청 불법화
-
18-09-2019 - |
문제
서로 다른 물리적 폴더를 가리키는 두 개의 IIS 사이트가 있습니다.이것은 web.config를 차별화 할 수 있고 사이트 데이터베이스에 사용되는 파일 및 어셈블리는 web.config의 두 사이트 모두에 대해 동일한 인스턴스를 가리 키도록 설정되어 있습니다. Config는 다른 부분에서 시작하도록 구성되어 있습니다.
/사이트코어/콘텐츠/홈/기본
/sitecore/content/홈/인트라넷
여태까지는 그런대로 잘됐다.
이제 문제는 전체 경로를 입력하여 실제 사이트에 속하지 않은 콘텐츠를 검색할 수 있다는 것입니다.즉.
http://www.default.com/sitecore/content/home/intranet.aspx
<-- 이것은 허용되어서는 안 됩니다. www.default.com
로 구성됩니다 /sitecore/content/home/default
루트로.
이를 허용하지 않는 기본 제공 메커니즘이 있습니까? 아니면 "교차 사이트" 요청을 불법으로 만들기 위해 itemresolver를 하위 클래스로 분류해야 합니까?
해결책
이것은 Sitecore가 항목을 해결하는 방법과 관련이 있습니다. 각 항목에 대해 3 개의 다른 URL을 찾았습니다. 예를 들어 다음 구조가 있다고 말합니다.
-sitecore
-content
-home
-page1
Page1에 액세스 할 수 있습니다.
http://mysite/sitecore/content/home/page1.aspx
http://mysite/page1.aspx
http://mysite/home/page1.aspx
그러나 이것이 아는 것은 문제를 해결하는 데 도움이되지 않습니다. 내가 제안 할 수있는 가장 좋은 솔루션은 보안을 사용하는 것입니다. 그러나 두 사이트 모두 익명 액세스가 필요한 경우 문제는 어떻게 제어합니까?
두 개의 개별 web.config가 있기 때문에 Sitecore 구성 섹션도 분리해야한다고 생각합니다. 따라서 우리가 할 수있는 것은 HTTP 요청 시작 파이프 라인 (web.config as/configuration/sitecore/pipelines/httprequestbegin)의 일부로 실행되는 파이프 라인 프로세스를 작성하고 각 사이트마다 하나를 생성하고 관련 Web.config를 업데이트하는 것입니다. 이 프로세스를 호출하면 사용자가 요청한 사이트에 대한 액세스를 제한하는 그룹에 속하는 가상 사용자를 만들 수 있습니다.
코드가 있습니다 여기 가상 사용자를 만드는 방법을 보여줍니다.
그리고 여기 파이프 라인 :
도움이 되었기를 바랍니다 :-)
다른 팁
인트라넷 항목(및 그 이하)이 Sitecore 보안으로 보호된다면 문제가 되지 않으며 액세스가 불가능하지도 않습니다. :)
보안을 통해 처리할 수 없다면 ItemResolver를 사용하겠습니다.
건배