更新 : November 2007
XmlSecureResolver クラスは、XmlResolver オブジェクトをラップして元の XmlResolver がアクセスできるリソースを制限することにより、別の XmlResolver オブジェクトを安全に保つ支援をします。たとえば、XmlSecureResolver クラスは、特定のインターネット サイトやゾーンへのアクセスを禁止できます。
URL を使用してアクセスを制限するには
ローカル イントラネット サイトへのアクセスだけを許可する XmlSecureResolver オブジェクトを作成します。
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
アクセス許可セットを使用してアクセスを制限するには
WebPermission オブジェクトを作成します。
Dim myWebPermission As New WebPermission(PermissionState.None)
WebPermission myWebPermission = new WebPermission(PermissionState.None);
次の 2 つの URL へのアクセスだけを許可します。
myWebPermission.AddPermission(NetworkAccess.Connect, "https://www.contoso.com/") myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/")
myWebPermission.AddPermission(NetworkAccess.Connect,"https://www.contoso.com/"); myWebPermission.AddPermission(NetworkAccess.Connect,"http://litwareinc.com/data/");
PermissionSet オブジェクトに Web アクセス許可を追加します。
Dim myPermissions As New PermissionSet(PermissionState.None) myPermissions.AddPermission(myWebPermission)
PermissionSet myPermissions = new PermissionSet(PermissionState.None); myPermissions.AddPermission(myWebPermission);
アクセス許可セットを使用して XmlSecureResolver オブジェクトを作成します。
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
証拠を使用してアクセスを制限するには
Evidence を使用してアクセスを制限できます。基になる XmlResolver に適用される PermissionSet の作成には、Evidence を使用します。XmlSecureResolver はリソースを開く前に、作成された PermissionSet の PermitOnly 呼び出します。
以下は、考えられるいくつかのシナリオとそれぞれのシナリオについての証拠の種類の概要です。
完全に信頼されている環境で作業している場合 :
アセンブリを使用して証拠を作成します。
Dim myEvidence As Evidence = Me.GetType().Assembly.Evidence Dim myResolver As XmlSecureResolver myResolver = New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
Evidence myEvidence = this.GetType().Assembly.Evidence; XmlSecureResolver myResolver; myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
信頼度の低い環境で作業していて、外部ソースからのコードまたはデータがある。その外部ソースの出所を知っていて検証可能な URI がある場合 :
URI を使用して証拠を作成します。
Dim myEvidence As Evidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI) Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI); XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
信頼度の低い環境で作業していて、外部ソースからのコードまたはデータがあり、その外部ソースの出所を知らない場合 :
evidence パラメータを null に設定します。これは、リソースへのアクセスを禁止します。
または
アプリケーションでリソースへのアクセスが必要な場合は、呼び出し元に証拠を要求します。
XmlSecureResolver による XML リソースの解決
XmlUrlResolver クラスは、System.Xml 名前空間内のクラスすべての既定のリゾルバです。これは、XML ドキュメントの読み込みと、エンティティ、DTD またはスキーマ、import または include ディレクティブなど、外部リソースの解決に使用されます。
XmlResolver オブジェクトの使用を指定することによって、これをオーバーライドできます。XmlSecureResolver を指定することにより、基になる XmlResolver でアクセス可能なリソースを制限できます。
XmlSecureResolver を使用する XmlReader オブジェクトを作成するには
正しいアクセス許可セットを持つ XmlSecureResolver オブジェクトを作成します。
XmlSecureResolver オブジェクトを使用する XmlReaderSettings オブジェクトを作成します。
Dim settings As New XmlReaderSettings() settings.XmlResolver = myResolver
XmlReaderSettings settings = new XmlReaderSettings(); settings.XmlResolver = myResolver;
XmlReaderSettings オブジェクトを使用して XmlReader オブジェクトを作成します。
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReader reader = XmlReader.Create("books.xml", settings);
XmlSecureResolver を使用して XSLT スタイル シートを読み込むには
正しいアクセス許可セットを持つ XmlSecureResolver オブジェクトを作成します。
XmlSecureResolver を Load メソッドに渡します。
Dim xslt As New XslCompiledTransform() xslt.Load("https://serverName/data/xsl/sort.xsl", Nothing, myResolver)
XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("https://serverName/data/xsl/sort.xsl", null, myResolver);