從部分受信任程式碼使用程式庫

更新:2007 年 11 月

應用程式接收的使用權限,若低於執行階段程式碼存取安全性系統的完全信任,則不允許呼叫共用 Managed 程式庫,除非程式庫撰寫者特別允許它們透過使用 AllowPartiallyTrustedCallersAttribute 類別進行呼叫。因此,應用程式撰寫者必須留意,某些程式庫將無法從部分受信任內容提供給它們。依預設值,所有從近端內部網路或網際網路區域執行的程式碼都是部分受信任。如果您不希望從部分受信任的內容執行您的程式碼,或是由部分受信任的程式碼呼叫它,則可忽略本章節中的資訊。但是,如果您撰寫的程式碼必須與部分受信任的程式碼互動或從部分受信任的內容操作,則應該考慮下列因素:

  • 程式庫必須使用強式名稱 (Strong Name) 簽名,才能供多個應用程式共用。強式名稱可讓您將程式碼放到全域組件快取中,也允許客戶驗證某一特定的行動程式碼是否確實是由您所發出。

  • 依預設值,使用強式名稱的共用程式庫會針對完全信任權限自動執行隱含的 LinkDemand,而不需程式庫寫入器執行任何動作。

  • 如果呼叫端沒有完全信任使用權限,但仍嘗試呼叫這類程式庫,Runtime 便會擲回 SecurityException,而且不允許呼叫端連結該程式庫。

  • 若要停用自動 LinkDemand 並防止擲回例外狀況,您可以將 AllowPartiallyTrustedCallersAttribute 屬性置於共用程式庫的組件範圍上。這個屬性讓您的程式庫可以從部分受信任的 Managed 程式碼來呼叫。

  • 如果部分受信任程式碼的程式庫存取權是使用這個屬性授與的,則該程式碼還必須受制於本機電腦原則定義的其他限制。

  • 並無任何程式方式可供部分受信任程式碼用來呼叫沒有 AllowPartiallyTrustedCallersAttribute 屬性的程式庫。如果應用程式未依預設取得完全信任的權限,則管理員必須選擇修改安全性原則並授與應用程式完全信任的使用權限,應用程式才能呼叫這類程式庫。

特定應用程式私用的程式庫不需要強式名稱或 AllowPartiallyTrustedCallersAttribute 屬性,而且不能由應用程式外部潛在的惡意程式碼參考。這類程式碼已受保護,不會被部分受信任的行動程式碼蓄意或非蓄意誤用,而不需要開發人員或管理員額外進行任何動作。

對於下列程式碼類型,您應該明確考慮啟用由部分受信任程式碼使用的設定:

  • 已通過審慎的安全穩定性測試,且符合安全程式碼撰寫方針所述規則的程式碼。

  • 專為部分受信任案例撰寫的強式名稱程式碼程式庫。

  • 使用強式名稱簽名的任何元件 (不論是部分或完全受信任),都會由下載自網際網路或近端內部網路的行動程式碼呼叫。這些元件被影響的原因是因為行動程式碼在預設安全性原則下會受到部分信任。

  • 修改了預設原則時,安全性原則授與低於完全信任權限的任何程式碼。

    注意事項:

    .NET Framework 類別庫 (Class Library) 中提供的某些類別沒有 AllowPartiallyTrustedCallersAttribute 屬性,且不能由部分信任的程式碼呼叫。如需可由部分信任程式碼呼叫的類別清單,請參閱標記為 AllowPartiallyTrustedCallersAttribute 的 .NET Framework 組件

請參閱

其他資源

程式碼存取安全性