У меня есть функция, подобная слиянию почты, которая берет шаблон, некоторый бизнес-объект и создает HTML, который затем превращается в PDF.
Я использую RazorEngine , чтобы сделать шаблон + модель в HTML-бит.
Если я позволю пользователям указывать шаблоны, какие риски я принимаю? Можно ли снизить риски?
Например, могут ли пользователи выполнять произвольный код? (удалить файлы, изменить базу данных и т. д.?) Есть ли способ, как я могу обнаружить такого рода вещи? (Я знаю, что это было бы вообще невозможно, но биты кода в шаблоне бритвы должны быть получены из свойств модели или, возможно, если операторы основаны на значениях свойств модели).
Я в основном доверяю пользователям здесь (это небольшой частный проект), но поскольку движки шаблонов идут, этот кажется слишком мощным для этого приложения.