Я проектирую систему, которая будет запускать пользовательский скрипт python на сервере. Сценарий должен иметь доступ только к нескольким модулям, перечисленным в белом списке, и ничего больше.
Одним из способов безопасного внедрения такой системы является создание настраиваемого интерпретатора python путем удаления всех модулей и переопределения основного механизма "импорта", чтобы можно было импортировать только выбранные модули, как описано здесь. Но этот подход потребует много работы с моей стороны.
Другим подходом является предварительная обработка сценария и проверка наличия ключевых слов "импорт" и "eval". Если эти ключевые слова присутствуют, сценарий не будет запущен, а сигналы тревоги исчезнут. Но есть ли другой способ, посредством которого можно все же импортировать модуль и делать вредоносные вещи?
Прочитать эту тему: позволить пользователям загружать скрипты Python для выполнения