Санитарная обработка exec () ввода в Python? - PullRequest
0 голосов
/ 25 сентября 2019

Если у меня есть такой код:

string = input(">")
exec(string)

Пользователь мог бы сделать что-то вроде

import os
os.system("rm -rf")

В идеале я хотел бы, чтобы пользователь вводил данныечто-то вроде

foo(3)

в консоль, с foo() в качестве пользовательской функции, которую я определил, и передать ее Python, чтобы он выплевывал результаты.

Можно ли либо

  • экранировать такие символы, как import или os, либо что-либо, что не указано в коде

  • Используйте что-то вроде Docker, чтобы ограничить права доступа к программе

Мой единственный другой вариант, который я могу реально увидеть, - это написать собственный язык программирования, но это выходит за рамки моегоОбъем. * * тысяча двадцать семь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...