Ich arbeite gerade an einem sehr modularen und pluginbasierten Framework für meine Bachelorarbeit. Die Hauptidee ist, dass es einen Ordner in meiner Anwendungsstruktur mit dem Namen plugins
gibt, wo Sie kompilierte Plugins (z. B. .dll
-Dateien) einwerfen können, die einer speziellen Schnittstelle IPlugin
entsprechen. Die Anwendung führt dann Aufgaben mit dem Plugin aus, das ein Benutzer auswählt. Also, wenn ich eine Aufgabe einmal in einer PDF-Datei ausführen möchte, würde ich die PdfPlugin
wählen und einmal in einem Word-Dokument würde ich die DocPlugin
zur Arbeit wählen.So verhindern Sie, dass Plugins schädlichen Code ausführen
Die Ausgabe ist auch in Schnittstellen definiert, so dass jedes Plugin die gleiche Datenstruktur zurückgibt. Nur die tatsächliche Arbeit unterscheidet sich für jede Bibliothek.
Nun ruft die Anwendung nur die Methoden auf, die in der Schnittstelle definiert sind, z. ParseDocument()
und wie kann ich verhindern, dass die Plugins (die möglicherweise von Dritten entwickelt wurden) schädlichen Code ausführen?
Ich arbeite an .NET3.5 (vielleicht wird auf 4, noch nicht entschieden) und C#.
Ist es möglich, ein Plugin nach den gewünschten Code Access Security-Berechtigungen abzufragen? Im Vergleich zu etwas wie Intents auf Android? I.e. Ich möchte wahrscheinlich ein Plugin-Framework, mit dem ich feststellen kann, welche Berechtigungen ein Plugin verlangt, damit ich den Benutzer vor dem Laden des Plugins zur Bestätigung auffordern kann. Oder ist es andersherum, in dem ich Berechtigungen in meiner App erzwinge, und dann scheitert das Plugin einfach/Ausnahme zu werfen, wenn es versucht, etwas außerhalb der zulässigen Berechtigungen zu tun? – AaronLS
Nicht nach einem "How to" fragen, da das irgendwie außerhalb des Bereichs der Frage liegt, aber neugierig, für welche dieser zwei verschiedenen Ansätze CAS geeignet ist. – AaronLS