Obecnie pracuję nad bardzo modularną i opartą na wtyczkach ramą dla mojej pracy licencjackiej. Główną ideą jest to, że w mojej strukturze aplikacji znajduje się folder o nazwie plugins
, w którym można upuścić skompilowane wtyczki (na przykład .dll
-files), które są zgodne ze specjalnym interfejsem IPlugin
. Następnie aplikacja wykonuje zadania za pomocą wtyczki wybranej przez użytkownika. Tak więc, jeśli chcę wykonać zadanie raz w pliku PDF, wybrałbym PdfPlugin
i raz w dokumencie tekstowym, wybrałbym DocPlugin
do pracy.Jak zabezpieczyć wtyczki przed szkodliwym kodem
Dane wyjściowe są również definiowane w interfejsach, więc każda wtyczka zwraca tę samą strukturę danych. Faktyczna praca różni się dla każdej biblioteki.
Teraz, ponieważ aplikacja po prostu wywołuje metody zdefiniowane w interfejsie, np. ParseDocument()
i tym podobne, w jaki sposób mogę zapobiec temu, aby wtyczki (które mogły zostać opracowane przez osoby trzecie) mogły wykonywać szkodliwy kod?
Pracuję na .NET3.5 (może zmienię na 4, jeszcze nie zdecydowałem) i C#.
Czy można zapytać wtyczkę o uprawnienia Code Access Security, jakich chce? W porównaniu do czegoś takiego jak zamiary na Androida? To znaczy. Prawdopodobnie chciałbym struktury wtyczek, która pozwala mi określić, jakie uprawnienia prosi wtyczka, więc mogę poprosić użytkownika o potwierdzenie przed załadowaniem wtyczki. Czy jest odwrotnie, że egzekwuję uprawnienia w mojej aplikacji, a następnie wtyczka po prostu zawiesza się/wyrzuca wyjątek, jeśli próbuje coś zrobić poza dozwolonymi uprawnieniami? – AaronLS
Nie pytając o "jak", ponieważ jest to rodzaj poza zakresem pytania, ale ciekawe, które z tych dwóch różnych podejść CAS jest odpowiednie. – AaronLS