複数の Web サイトと「クロスサイト」リクエストは違法です
-
18-09-2019 - |
質問
異なる物理フォルダーを指す 2 つの IIS サイトがあります。これは、web.configを区別できるようにし、サイトデータベースに使用されるファイルとアセンブリは、Web.configの両方のサイトについて同じインスタンスを指すように設定されています。
/sitecore/content/home/default
/sitecore/content/home/イントラネット
ここまでは順調ですね。
ここで、問題は、完全なパスを入力することで、実際のサイトに属さないコンテンツを取得できることです。つまり。
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
ただし、これを知っていても問題の解決には役立ちません。私が提案できる最善の解決策は、セキュリティを使用することです。ただし、両方のサイトに匿名アクセスが必要な場合、問題はこれをどのように制御するかです。
2 つの別個の web.config があるため、Sitecore 構成セクションも別個にする必要があると思います。したがって、私たちができることは、http リクエスト開始パイプライン (web.config 内で /configuration/sitecore/pipelines/httpRequestBegin として) の一部として実行されるパイプライン プロセスを作成し、サイトごとに 1 つ作成し、関連する web.config を更新することです。このプロセスが呼び出されると、ユーザーが要求したサイトへのアクセスを制限するグループに属する仮想ユーザーが作成される可能性があります。
いくつかのコードがあります ここ これは、仮想ユーザーを作成する方法を示しています。
そして ここ パイプライン上:
お役に立てれば :-)
他のヒント
イントラネット項目が(下記)サイトコアのセキュリティで保護されているまあ場合は、アクセスに問題でも可能ではありません。)
あなたはセキュリティとそれを扱うことができないなら、私はItemResolverとなるだろう。
乾杯