Share via


Delegaten

Im Hinblick auf die Delegatsicherheit bestehen zwischen den verschiedenen .NET Framework-Versionen Unterschiede. In diesem Abschnitt werden die unterschiedlichen Delegatverhaltensweisen mit den jeweils erforderlichen Sicherheitsüberlegungen beschrieben.

.NET Framework, Version 1.0 und 1.1

Führen Sie in .NET Framework, Version 1.0 und 1.1, die folgenden Sicherheitsaktionen für einen Delegatersteller und einen Delegataufrufer aus.

  • Beim Erstellen eines Delegaten werden Sicherheitsverknüpfungsaufrufe in der Zielmethode des Delegaten gegen die Berechtigungen des Delegaterstellers ausgeführt. Wenn die Sicherheitsaktion nicht erfolgreich ausgeführt wird, wird eine SecurityException ausgelöst.

  • Wenn der Delegat aufgerufen wird, werden alle vorhandenen Sicherheitsforderungen für den Delegataufrufer ausgeführt.

Immer wenn der Code Delegaten von weniger vertrauenswürdigem Code erhält, der ihn aufrufen kann, müssen Sie sich vergewissern, dass Sie das Ausweiten der Berechtigungen des weniger vertrauenswürdigen Codes nicht ermöglichen. Wenn ein Delegat abgerufen und zu einem späteren Zeitpunkt verwendet wird, befindet sich der erstellende Code nicht in der Aufrufliste. Wenn Code in bzw. unter dem Delegaten eine geschützte Operation ausführt, werden die Berechtigungen des Delegaten nicht getestet. Wenn Code und Aufrufercode über umfassendere Berechtigungen als der Ersteller verfügen, kann dieser den Aufrufpfad bereitstellen, obwohl er sich nicht in der Aufrufliste befindet.

Zur Behebung dieses Problems können Sie entweder die Aufrufer beschränken (z. B. durch Anfordern einer Berechtigung) oder die Berechtigungen einschränken, unter denen der Delegat ausgeführt werden kann (z. B. durch ein Außerkraftsetzen des Deny-Stapels oder des PermitOnly-Stapels).

.NET Framework, Version 2.0 und höher

Im Unterschied zu Vorgängerversionen führt .NET Framework, Version 2.0, Sicherheitsaktionen gegen den Delegatersteller aus, sobald der Delegat erstellt und aufgerufen wird.

  • Beim Erstellen eines Delegaten werden Sicherheitsverknüpfungsaufrufe in der Zielmethode des Delegaten gegen die Berechtigungen des Delegaterstellers ausgeführt. Wenn die Sicherheitsaktion nicht erfolgreich ausgeführt wird, wird eine SecurityException ausgelöst.

  • Die Berechtigungen des Delegaterstellers werden während der Delegaterstellung ebenfalls erfasst und mit dem Delegaten gespeichert.

  • Wenn der Delegat aufgerufen wird, werden die erfassten Berechtigungen des Delegaterstellers zuerst gegen alle Forderungen im aktuellen Kontext ausgeführt, wenn Delegatersteller und Delegataufrufer unterschiedlichen Assemblys angehören. Danach werden alle vorhandenen Sicherheitsforderungen für den Delegataufrufer ausgeführt.

Siehe auch

Weitere Ressourcen

Richtlinien für das Schreiben von sicherem Code