Verwenden von Bibliotheken aus teilweise vertrauenswürdigem Code

Aktualisiert: November 2007

Anwendungen, die durch das Sicherheitssystem für Laufzeitcodezugriff nicht als vollständig vertrauenswürdig eingestuft werden, dürfen keine freigegebenen verwalteten Bibliotheken aufrufen, es sei denn, der Entwickler der Bibliothek hat dies ausdrücklich durch Verwendung der AllowPartiallyTrustedCallersAttribute-Klasse zugelassen. Die Anwendungsentwickler müssen daher beachten, dass ihnen aus einem teilweise vertrauenswürdigen Kontext einige Bibliotheken nicht zur Verfügung stehen. In der Standardeinstellung gilt Code, der aus der lokalen Intranet- oder Internetzone ausgeführt wird, als teilweise vertrauenswürdig. Wenn Sie nicht erwarten, dass Ihr Code aus einem teilweise vertrauenswürdigen Kontext ausgeführt wird oder durch teilweise vertrauenswürdigen Code aufgerufen wird, brauchen Sie den Informationen in diesem Abschnitt keine besondere Aufmerksamkeit widmen. Wenn Sie jedoch Code schreiben, der mit teilweise vertrauenswürdigem Code zusammenwirken oder aus einem teilweise vertrauenswürdigen Kontext ausgeführt werden muss, sollten Sie folgende Faktoren berücksichtigen:

  • Bibliotheken müssen mit einem starken Namen signiert sein, damit sie von mehreren Anwendungen gemeinsam genutzt werden können. Durch starke Namen kann der Code im globalen Assemblycache abgelegt werden, und Consumer können überprüfen, ob ein bestimmter mobiler Code tatsächlich von Ihnen stammt.

  • In der Standardeinstellung führen gemeinsam genutzte Bibliotheken mit starken Namen automatisch eine implizite LinkDemand für vollständige Vertrauenswürdigkeit aus, ohne dass der Entwickler der Bibliothek aktiv werden muss.

  • Wenn ein Aufrufer nicht vollständig vertrauenswürdig ist und er trotzdem versucht, eine solche Bibliothek aufzurufen, löst die Laufzeit eine SecurityException aus, und der Aufrufer kann keine Verbindung mit der Bibliothek herstellen.

  • Das AllowPartiallyTrustedCallersAttribute-Attribut kann im Gültigkeitsbereich der Assembly einer gemeinsam genutzten Bibliothek platziert werden, um die automatische LinkDemand zu deaktivieren und um zu verhindern, dass die Ausnahme ausgelöst wird. Mithilfe dieses Attributs können Bibliotheken aus teilweise vertrauenswürdigem, verwaltetem Code heraus aufgerufen werden.

  • Teilweise vertrauenswürdiger Code, dem durch dieses Attribut Zugriff auf eine Bibliothek gewährt wird, unterliegt außerdem weiteren Beschränkungen, die von den lokalen Computerrichtlinien definiert werden.

  • Für teilweise vertrauenswürdigen Code gibt es keine programmgesteuerte Möglichkeit zum Aufrufen einer Bibliothek, die nicht über das AllowPartiallyTrustedCallersAttribute-Attribut verfügt. Wenn eine Anwendung in der Standardeinstellung nicht vollständig vertrauenswürdig ist, muss der Administrator die Sicherheitsrichtlinie ändern und die Anwendung als vollständig vertrauenswürdig einstufen, bevor diese eine solche Bibliothek aufrufen kann.

Private Bibliotheken einer bestimmten Anwendung benötigen keinen starken Namen oder das AllowPartiallyTrustedCallersAttribute-Attribut, und auf sie kann durch anwendungsexternen, potenziell bösartigen Code nicht verwiesen werden. Solcher Code ist gegen beabsichtigten oder unbeabsichtigten Missbrauch durch teilweise vertrauenswürdigen, mobilen Code geschützt, ohne dass Entwickler oder Administratoren zusätzlich aktiv werden müssen.

Bei folgenden Codetypen sollten Sie in Betracht ziehen, die Verwendung durch teilweise vertrauenswürdigen Code explizit zuzulassen:

  • Code, der sorgfältig auf Sicherheitsrisiken getestet wurde und mit den Regeln übereinstimmt, die unter Richtlinien für das Schreiben von sicherem Code beschrieben werden.

  • Codebibliotheken mit starkem Namen, die speziell für Szenarios mit teilweise vertrauenswürdigem Code geschrieben wurden.

  • Alle mit einem starken Namen signierten Komponenten (sowohl teilweise als auch vollständig vertrauenswürdig), die durch heruntergeladenen, mobilen Code aus dem Internet oder dem lokalen Intranet aufgerufen werden können. Diese Komponenten sind betroffen, da gemäß den Standardsicherheitsrichtlinien mobiler Code als teilweise vertrauenswürdig eingestuft wird.

  • Wenn die Standardrichtlinie geändert wird, wird aller Code von der Sicherheitsrichtlinie nicht als vollständig vertrauenswürdig eingestuft.

    Hinweis:

    Einige in der .NET Framework-Klassenbibliothek enthaltenen Klassen verfügen nicht über das AllowPartiallyTrustedCallersAttribute-Attribut und können nicht von teilweise vertrauenswürdigem Code aufgerufen werden. Eine Liste von Klassen, die von teilweise vertrauenswürdigem Code aufgerufen werden können, finden Sie unter .NET Framework-Assemblys mit AllowPartiallyTrustedCallersAttribute.

Siehe auch

Weitere Ressourcen

Codezugriffssicherheit