У меня есть ситуация с некоторым кодом, где 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()
единственным безопасным вариантом?