共用方式為


HOW TO:使用 XmlSecureResolver 類別

更新: 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/");
    

透過使用權限集合限制存取

  1. 建立 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/");
    
  3. 將 Web 使用權限加入至 PermissionSet 物件。

    Dim myPermissions As New PermissionSet(PermissionState.None)
    myPermissions.AddPermission(myWebPermission)
    
    PermissionSet myPermissions = new PermissionSet(PermissionState.None);
    myPermissions.AddPermission(myWebPermission);
    
  4. 利用使用權限集合建立 XmlSecureResolver 物件。

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

使用辨識項限制存取

  • 您可以使用 Evidence 限制存取。Evidence 可用於建立 PermissionSet,其會套用至基礎 XmlResolver。在開啟任何資源之前,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 或結構描述) 及匯入或併入指示詞。

藉由指定要使用的 XmlResolver 物件,可以覆寫此項。藉由指定 XmlSecureResolver,可以限制基礎 XmlResolver 可存取的資源。

建立使用 XmlSecureResolver 的 XmlReader 物件

  1. 建立具有正確使用權限集合的 XmlSecureResolver 物件。

  2. 建立使用 XmlSecureResolver 物件的 XmlReaderSettings 物件。

    Dim settings As New XmlReaderSettings()
    settings.XmlResolver = myResolver
    
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.XmlResolver = myResolver;
    
  3. 使用 XmlReaderSettings 物件建立 XmlReader 物件。

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

使用 XmlSecureResolver 載入 XSLT 樣式表

  1. 建立具有正確使用權限集合的 XmlSecureResolver 物件。

  2. 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);
    

請參閱

其他資源

安全性和 System.Xml 應用程式

XML 文件和資料