Verwenden von Bibliotheken aus teilweise vertrauenswürdigem Code

HinweisHinweis

In diesem Thema wird das Verhalten von Assemblys mit starkem Namen behandelt. Es gilt lediglich für Assemblys der Ebene 1.Sicherheitstransparenter Code, Ebene 2-Assemblys in .NET Framework, Version 4 oder höher sind von starken Namen nicht betroffen.Weitere Informationen zu Änderungen am Sicherheitssystem finden Sie unter Änderungen der Sicherheit in .NET Framework 4.

Anwendungen, die vom Host oder Sandkasten 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 des AllowPartiallyTrustedCallersAttribute-Attributs zugelassen. Die Anwendungsentwickler müssen daher beachten, dass ihnen aus einem teilweise vertrauenswürdigen Kontext einige Bibliotheken nicht zur Verfügung stehen. Standardmäßig ist der gesamte Code, der in einem teilweise vertrauenswürdigen Sandkasten ausgeführt wird und nicht in der Liste der voll vertrauenswürdigen Assemblys aufgeführt ist, 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 Verwendung starker Namen können Sie Code im globalen Assemblycache platzieren oder der Liste für vollständige Vertrauenswürdigkeit einer Sandkasten-AppDomain hinzufügen und Consumern damit die Überprüfung ermöglichen, ob ein bestimmtes Datenelement mobilen Codes tatsächlich von Ihnen stammt.

  • In der Standardeinstellung führen gemeinsam genutzte Bibliotheken der Ebene 1 mit starken Namen automatisch einen impliziten 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 der AppDomain 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.

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 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 (teilweise oder vollständig vertrauenswürdigen) Komponenten, die mit einem starken Namen signiert sind, der von aus dem Internet heruntergeladenem Code aufgerufen wird.

HinweisHinweis

Einige in der .NET Framework-Klassenbibliothek enthaltene Klassen verfügen über kein 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

Konzepte

Codezugriffssicherheit

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

Juli 2010

Kleinere Updates am Inhalt.

Korrektur inhaltlicher Fehler.