Python Development
Александр Вотин, Backend developer · 04.12
Сила и опасность функции eval() в Python
Это инструмент, который может сделать твою программу невероятно гибкой. Но с ним нужно быть осторожным, чтобы не навредить себе или своему коду.
eval() выполняет строку как Python-код. Например, если ты передашь строку "2 + 3", eval() вычислит и вернёт результат — число 5.
Иногда тебе нужно выполнять код, который заранее неизвестен. Представь, что твоя программа получает математические выражения от пользователя и должна их вычислять. Вместо того чтобы писать сложный парсер, ты можешь просто воспользоваться eval().
Но вот где подвох, eval() выполнит любой код, переданный ей. Если пользователь введёт что-то вредоносное, программа выполнит это без вопросов. Например, команда для удаления файлов может уничтожить данные на твоём компьютере.
Давай посмотрим на пример программы на изображении, которая вычисляет пользовательские математические выражения. - Ты вводишь, например, 2 + 2, и программа выдаёт результат 4. - Но если ты введёшь опасный код, вроде import('os').system('rm -rf /'), и программа не будет защищена, это приведёт к катастрофическим последствиям.
Ограничивай доступные функции. Не позволяй пользователю вводить команды, которые программа не должна выполнять. Ставь под сомнение необходимость eval(). Если есть возможность обойтись без неё, выбери более безопасное решение.
Используй её только тогда, когда это действительно необходимо, и всегда добавляй защиту от нежелательного ввода.
еще контент автора
еще контент автора
Python Development
Александр Вотин, Backend developer · 04.12
войдите, чтобы увидеть
и подписаться на интересных профи