2009-05-13 27 views

Antwort

8

Ich schlage vor, Sie Strong name assemblies can keep you out of DLL Hell lesen:

Strong Name Baugruppen erlauben Entwickler Komponente Updates zu vereinfachen und zu vermeiden, die berüchtigte DLL Hölle. Erfahren Sie mehr über die Anatomie von starke Namen und sehen Sie, wie Sie verwenden können, um die Versionskompatibilität und Sicherheit in Ihren .NET-Anwendungen zu gewährleisten.

Siehe auch this article für ein kurzes Tutorial, wie man eine Baugruppe zu einem starken Namen macht.

+3

Erste Verknüpfung ist gebrochen –

2

Es kann auch verwendet werden, um sicherzustellen, dass die Baugruppe nicht manipuliert wird, da sie vom ursprünglichen Herausgeber freigegeben wurde.

+1

Aber es fehlt eine Möglichkeit, den ursprünglichen Herausgeber zu überprüfen. Dafür müssten Sie zusätzlich eine Technologie wie AuthentiCode verwenden. Der Hauptzweck besteht jedoch darin, eindeutige ("starke") Namen zu erstellen, um eine bestimmte Version einer Assembly zu identifizieren (um die "DLL Hell" -Probleme zu beheben http://msdn.microsoft.com/en-us/library/ms811694 .aspx) –

+0

@divo: Sicher. Dies wird in Andrews Antwort erwähnt. Ich habe nicht gesehen, dass du duplizieren musst. Ich wollte nur diese Möglichkeit hinzufügen. Ich hatte diese Tatsache im Detail in dieser Antwort erwähnt: http://stackoverflow.com/questions/369248/can-strong-naming-an-assembly-be-used-to-verify-the-assembly-author/369268#369268 –

1

Ich schrieb eine lange Antwort, die beschreibt, wie stark die Benennung einer Baugruppe verhindert, dass Dritte die Baugruppe manipulieren, als Antwort auf diese question. Es kann nützlich sein, wenn Sie wollen, wie auch und warum.

+1

Das stimmt. Dies war jedoch nicht der Hauptaspekt, als starke Namensgebung entwickelt wurde. Bei der starken Benennung fehlen wichtige Funktionen wie die Authentifizierung und Sperrung des Publishers. Wenn eine manipulationssichere Verteilung Ihrer Assemblies gewünscht wird, ist es viel besser, sich auf digitale Zertifikate (wie Authenticode) zu verlassen –

0

Ich denke, eine der wichtigen Funktionen zur Vermeidung von DLL-Hijacking (oder was auch immer Sie es nennen) Probleme aufgrund von potenziellen schwachen Berechtigungen.

Nehmen wir an, dass eine der DLLs in Ihrer Anwendung von "Jeder" geschrieben werden kann, in diesem Fall kann jemand sie nur ändern und wenn ein Hochprivilegierter ausgeführt wird, kann der Angreifer seine Privilegien erhöhen.

Das ist ziemlich cool, denn in der realen Welt können Sie diese Angriffe gegen Anwendungen wie Anti-Viren und andere komplexe Anwendungen sehen, die auf mehrere DLLs an mehreren verschiedenen Orten beruht.