Как санировать рабочий процесс, загруженный пользователем? - PullRequest
0 голосов
/ 09 августа 2011

У меня мультитенантное приложение, которое может запускать произвольные рабочие процессы по мере необходимости.

Я планирую использовать конструктор рабочих процессов для создания этих рабочих процессов, но даже если я ограничу действия в панели инструментов, это не мешает злонамеренному пользователю редактировать свой собственный файл XAML, выполняя действия, которые я бы предпочел не делать ( специально обращаясь к .NET Framework)

Для данного рабочего процесса, как я могу убедиться, что используются только те действия, которые я одобряю? Является ли запрос XPath единственным способом или в WF есть функция, которая это проверяет?

Если вам нужно наглядное представление о том, что я ищу, здесь - это пример проекта и видео со ссылкой на него.

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Я бы просто загрузил рабочие процессы в изолированном домене приложений . Вы можете использовать статический метод GetStandardSandbox в SecurityManager, чтобы установить его относительно легко (и безопасно).

Конечно, на самом деле я еще не сделал , но я определенно думаю о том, чтобы добавить кое-что из этого в мой текущий код WF (который использует AppDomains для изоляции выполнения рабочих процессов от моего приложения). ).

1 голос
/ 09 августа 2011

Все, что вы можете сделать, это загрузить XAML как XML и проверить, что там.И обязательно проверяйте любое введенное VB-выражение, поскольку пользователи также могут добавлять туда интересные вещи.

...