Udostępnij przez


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ół konkretnej implementacji XmlResolver i ogranicza zasoby, do których XmlResolver ma dostęp. Na przykład, XmlSecureResolver ma możliwość zabronienia przekierowywania między domenami, które wynika z osadzonego identyfikatora URI (Uniform Resource Identifier).

Podczas konstruowania obiektu XmlSecureResolver, podajesz prawidłową implementację XmlResolver wraz z adresem URL, przypadkiem obiektu dowodowego lub zestawem uprawnień, który jest używany przez element XmlSecureResolver do określania poziomu zabezpieczeń. System.Security.PermissionSet jest generowany, lub wykorzystywany jest istniejący, a PermissionSet.PermitOnly jest wywoływany w celu zabezpieczenia bazowego elementu XmlResolver.

Ważne

XmlSecureResolver obiekty mogą zawierać poufne informacje, takie jak poświadczenia użytkownika. Zachowaj ostrożność podczas buforowania XmlSecureResolver obiektów i nie przekazuj 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 rozwiązywania polityk zintegrowanego środowiska CLR programu SQL Server nie używa informacji Url ani Zone. Zamiast tego przyznaje uprawnienia na podstawie identyfikatora GUID, który serwer dodaje podczas ładowania zestawów. W przypadku używania w zintegrowanym środowisku XmlSecureResolver programu SQL Server, podaj wszelkie wymagane dowody bezpośrednio, korzystając z określonego PermissionSet.

Aby użyć bezpiecznego rozwiązania

  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 obiekt WebPermission.

    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 za pomocą 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łuje XmlSecureResolverPermitOnly na utworzonym 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 jego pochodzenia, to:

    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 z użyciem bezpiecznego resolvera

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

  2. Przekaż XmlSecureResolver do metody Load.

    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)