У меня есть ситуация с некоторым кодом, где eval() появился как возможное решение. Теперь у меня никогда не было
использовать eval() раньше, но я нашел много информации о потенциале
опасность, которую это может вызвать. Тем не менее, я очень опасаюсь использовать его.
Моя ситуация в том, что у меня есть ввод, предоставляемый пользователем:
datamap = raw_input('Provide some data here: ')
Где datamap должен быть словарь. Я обыскал и обнаружил, что eval() может это решить.
Я думал, что я могу проверить тип ввода, прежде чем пытаться использовать данные, и что
будет жизнеспособной мерой предосторожности.
datamap = eval(raw_input('Provide some data here: ')
if not isinstance(datamap, dict):
return
Я прочитал документы, и я до сих пор неясно, будет ли это безопасно или нет. Оценивает ли eval данные сразу после его ввода или после вызова переменной datamap?
Является ли ast модулем .literal_eval() единственным безопасным вариантом?