2013-06-18 16 views
5

Ich habe eine Exe, die Castle Windsor verwendet, um einen Plugin-Mechanismus zu implementieren. Ich muss überprüfen, dass die Plugins, die ich lade, von mir kamen (und nicht irgendein bösartiger Code sind).Authentifizieren von DLLs in C#

Ich glaube, ich muss sowohl die exe und die DLL mit einem asymmetrischen Schlüssel (möglicherweise ein SNK?) Signieren. Erstens ist das korrekt und wie kann ich das tun? Zweitens, wie kann ich programmatisch in der exe verifizieren, dass die DLL von einer vertrauenswürdigen Quelle kam?

+0

möglich Duplikat [.NET-Assembly-Plugin-Sicherheit] (http://stackoverflow.com/questions/932339/net-assembly-plugin-security) –

Antwort

5

Wenn Sie Ihre DLL signieren, können Sie zur Laufzeit das StrongName der DLL überprüfen, bevor Sie es laden.

Sie können auch überprüfen, ob der öffentliche Schlüssel, der zum Signieren verwendet wird, der ist, den Sie erwarten.

Um den öffentlichen Schlüssel einer Baugruppe erhalten Sie dies tun können:

Assembly assembly = ... 
AssemblyName assemblyName = assembly.GetName(); 
byte[] publicKey = assemblyName.GetPublicKey(); 

ich gerade überprüft und es gibt bereits eine gute Antwort dazu auf Stackoverflow hier:

https://stackoverflow.com/a/1350012/106159

+1

StrongName-Impact-Referenzen. Sie sollten nicht den Schlüssel überprüfen müssen. .Net lädt nur eine manipulierte Assembly, die signiert wurde. – Gusdor

+0

@Gusdor, aber wenn jemand anderes eine böswillige Assembly signierte, würde sie trotzdem geladen werden? Ich müsste überprüfen, ob der öffentliche Schlüssel ein autorisierter Wert ist, um sicherzustellen, dass die DLL von einem vertrauenswürdigen Entwickler stammt (ich) – Liath

+0

Ich habe vergessen, dass dies ein Pluggable-System ist, von dem Sie sprechen. DLL-Sicherheit ist auf einer offenen Plattform interessant. Jeder könnte Ihre Assembly laden und den öffentlichen Schlüssel anzeigen und dann eine bösartige Version schreiben (daher öffentlich!). Haben Sie darüber nachgedacht, die Plugins in teilweise vertrauenswürdigen App-Domains zu sandboxieren? – Gusdor

Verwandte Themen