Сила и опасность функции eval() в Python

Это инструмент, который может сделать твою программу невероятно гибкой. Но с ним нужно быть осторожным, чтобы не навредить себе или своему коду.

eval() выполняет строку как Python-код. Например, если ты передашь строку "2 + 3", eval() вычислит и вернёт результат — число 5.

Иногда тебе нужно выполнять код, который заранее неизвестен. Представь, что твоя программа получает математические выражения от пользователя и должна их вычислять. Вместо того чтобы писать сложный парсер, ты можешь просто воспользоваться eval().

Но вот где подвох, eval() выполнит любой код, переданный ей. Если пользователь введёт что-то вредоносное, программа выполнит это без вопросов. Например, команда для удаления файлов может уничтожить данные на твоём компьютере.

Давай посмотрим на пример программы на изображении, которая вычисляет пользовательские математические выражения. - Ты вводишь, например, 2 + 2, и программа выдаёт результат 4. - Но если ты введёшь опасный код, вроде import('os').system('rm -rf /'), и программа не будет защищена, это приведёт к катастрофическим последствиям.

Ограничивай доступные функции. Не позволяй пользователю вводить команды, которые программа не должна выполнять. Ставь под сомнение необходимость eval(). Если есть возможность обойтись без неё, выбери более безопасное решение.

Используй её только тогда, когда это действительно необходимо, и всегда добавляй защиту от нежелательного ввода.

Сила и опасность функции eval() в Python | Сетка — новая социальная сеть от hh.ru
repost

262

input message

напишите коммент

еще контент автора

еще контент автора

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь