Udostępnij za pośrednictwem


System.Xml.XmlSecureResolver, klasa

Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.

Klasa XmlUrlResolver jest domyślnym narzędziem rozpoznawania dla wszystkich klas w System.Xml przestrzeni nazw. Służy do ładowania dokumentów XML i rozpoznawania zasobów zewnętrznych, takich jak jednostki, DTD lub schematy, oraz importowanie lub dołączanie dyrektyw.

Tę wartość domyślną można zastąpić, określając XmlResolver obiekt do użycia. Jeśli na przykład chcesz ograniczyć zasoby, do których może uzyskać dostęp bazowy XmlResolver , możesz użyć XmlSecureResolver obiektu.

XmlSecureResolver owija się wokół konkretnego XmlResolver wdrożenia i ogranicza zasoby, do których podstawowy ma XmlResolver dostęp. Na przykład XmlSecureResolver ma możliwość zakazać przekierowywania między domenami, które występuje z osadzonego odwołania identyfikatora URI (Uniform Resource Identifier).

Podczas konstruowania XmlSecureResolver obiektu należy podać prawidłową XmlResolver implementację wraz z adresem URL, wystąpieniem obiektu dowodu lub zestawem uprawnień, który jest używany przez XmlSecureResolver element do określania zabezpieczeń. System.Security.PermissionSet Element jest generowany lub istniejący jest używany i PermissionSet.PermitOnly jest wywoływany w celu zabezpieczenia bazowego XmlResolverelementu .

Ważne

XmlSecureResolver obiekty mogą zawierać poufne informacje, takie jak poświadczenia użytkownika. Należy zachować ostrożność podczas buforowania XmlSecureResolver obiektów i nie należy przekazywać XmlSecureResolver obiektu do niezaufanego składnika.

Ważne

Istnieją różnice w infrastrukturze zabezpieczeń kodu uruchomionego w środowisku uruchomieniowym języka wspólnego platformy .NET (CLR) oraz w kodzie uruchomionym w środowisku CLR zintegrowanym w programie Microsoft SQL Server 2005. Może to prowadzić do przypadków, w których kod opracowany dla środowiska CLR platformy .NET działa inaczej, gdy jest używany w zintegrowanym clR programu SQL Server. Jedna z tych różnic wpływa na klasę XmlSecureResolver , gdy masz dowód oparty na adresie URL (czyli w przypadku używania CreateEvidenceForUrl(String) metody lub konstruktora XmlSecureResolver ). Mechanizm rozpoznawania zasad zintegrowanego środowiska CLR programu SQL Server nie używa Url informacji lub Zone . Zamiast tego przyznaje uprawnienia na podstawie identyfikatora GUID, który serwer dodaje podczas ładowania zestawów. W przypadku używania w XmlSecureResolver zintegrowanym środowisku CLR programu SQL Server podaj wszelkie wymagane dowody bezpośrednio przy użyciu określonego PermissionSetelementu .

Aby użyć bezpiecznego narzędzia rozpoznawania nazw

  1. Utwórz obiekt XmlSecureResolver z poprawnym zestawem uprawnień.

  2. XmlReaderSettings Utwórz obiekt, który używa XmlSecureResolver obiektu .

    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
    Dim settings As New XmlReaderSettings()
    settings.XmlResolver = myResolver
    
  3. XmlReaderSettings Przekaż obiekt do Create metody podczas tworzenia XmlReader obiektu.

    XmlReader reader = XmlReader.Create("books.xml", settings);
    
    Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
    

Aby ograniczyć dostęp przy użyciu adresu URL

Użyj konstruktora XmlSecureResolver(XmlResolver, String) , aby utworzyć XmlSecureResolver obiekt, który może uzyskiwać dostęp tylko do lokalnej witryny intranetowej.

XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")

Aby ograniczyć dostęp przy użyciu zestawu uprawnień

  1. Utwórz WebPermission obiekt.

    WebPermission myWebPermission = new WebPermission(PermissionState.None);
    
    Dim myWebPermission As New WebPermission(PermissionState.None)
    
  2. Określ adresy URL, do których chcesz zezwolić na dostęp.

    myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.contoso.com/");
    myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/");
    
    myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.contoso.com/")
    myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/")
    
  3. Dodaj uprawnienia sieci Web do PermissionSet obiektu.

    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
    Dim myPermissions As New PermissionSet(PermissionState.None)
    myPermissions.AddPermission(myWebPermission)
    
  4. Użyj konstruktora XmlSecureResolver(XmlResolver, PermissionSet) , aby utworzyć XmlSecureResolver obiekt przy użyciu zestawu uprawnień.

    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
    
    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myPermissions)
    

    Zobacz stronę referencyjną XmlSecureResolver , aby zapoznać się z innym przykładem.

Aby ograniczyć dostęp przy użyciu dowodów

Dostęp można ograniczyć przy użyciu konstruktora XmlSecureResolver(XmlResolver, Evidence) i określenia elementu Evidence. Element Evidence służy do tworzenia elementu PermissionSet , który jest stosowany do bazowego XmlResolverelementu . Wywołania XmlSecureResolverPermitOnly utworzonego PermissionSet przed otwarciem jakichkolwiek zasobów.

Poniżej przedstawiono kilka typowych scenariuszy i typ dowodów, które należy dostarczyć dla każdego z nich:

  • Jeśli pracujesz w w pełni zaufanym środowisku, użyj zestawu, aby utworzyć dowody:

    Evidence myEvidence = this.GetType().Assembly.Evidence;
    XmlSecureResolver myResolver;
    myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = Me.GetType().Assembly.Evidence
    Dim myResolver As XmlSecureResolver
    myResolver = New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • Jeśli pracujesz w częściowo zaufanym środowisku, masz kod lub dane pochodzące z zewnętrznego źródła i znasz pochodzenie zewnętrznego źródła i masz weryfikowalny identyfikator URI, użyj identyfikatora URI, aby utworzyć dowody:

    
    Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI);
    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI)
    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • Jeśli pracujesz w częściowo zaufanym środowisku i masz kod lub dane pochodzące z zewnętrznego źródła, ale nie znasz źródła zewnętrznego, albo:

    evidence Ustaw parametr na null. Umożliwia to brak dostępu do zasobów.

    — lub —

    Jeśli aplikacja wymaga dostępu do zasobów, zażądaj dowodów od obiektu wywołującego.

Aby załadować arkusz stylów XSLT przy użyciu bezpiecznego rozpoznawania nazw

  1. Utwórz obiekt XmlSecureResolver z poprawnym zestawem uprawnień.

  2. Przekaż metodę XmlSecureResolverLoad do metody .

    XslCompiledTransform xslt = new XslCompiledTransform();
    xslt.Load("http://serverName/data/xsl/sort.xsl", null, myResolver);
    
    Dim xslt As New XslCompiledTransform()
    xslt.Load("http://serverName/data/xsl/sort.xsl", Nothing, myResolver)