Я собираюсь получить кучу скриптов python из ненадежного источника.
Я хотел бы быть уверенным, что никакая часть кода не может повредить мою систему, что означает:
(1) the code is not allowed to import ANY MODULE
(2) the code is not allowed to read or write any data, connect to the network etc
(целью каждого script является циклическое перемещение по списку, вычисление некоторых данных из введенных данных и возврат вычисленного значения)
прежде чем выполнить такой код, я бы хотел, чтобы script "исследовал" его и следил за тем, чтобы там ничего опасного не могло повредить мою систему.
Я подумал об использовании следующего подхода: check that the word 'import' is not used (so we are guaranteed that no modules are imported)
тем не менее, пользователь может (по желанию) писать код для чтения/записи файлов и т.д. (скажем, используя open
).
Тогда возникает вопрос:
(1) где я могу получить "глобальный" список методов python (например, open
)?
(2) Есть ли какой-то код, который я мог бы добавить к каждому script, который был отправлен мне (вверху), который сделает некоторые "глобальные" методы недействительными для этого script (например, любое использование ключевое слово open
приведет к исключению)?
Я знаю, что есть некоторые решения для песочницы python. но, пожалуйста, постарайтесь ответить на этот вопрос, поскольку я считаю, что это более подходящий подход для моих нужд.
EDIT: предположим, что я уверен, что в файле нет import
и что в нем нет возможных вредных методов (таких как open
, eval
и т.д.). могу ли я сделать вывод, что файл SAFE? (можете ли вы придумать какие-либо другие "опасные" способы запуска встроенных методов?)