Python
Почему не стоит использовать eval в написании кода?
Потому что eval подразумевает, что ты будешь пихать туда какой-то сторонний код, полученный из чёрт знает каких источников, а значит, высока вероятность, что туда что-то вредоносное подкинут
Анатолий Снигоренко
А каким образом это происходит? У меня калькулятор с использованием функции eval, для проекта школьного сделан.
Медленно: перед выполнением строка компилируется в байт код виртуальной машины - уже во время работы программы.
Небезопасно: мало ли что будет введено с клавиатуры и всё это выполнится без какого-либо контроля.
Но иногда бывает полезно: когда ты точно знаешь, зачем это делаешь, и точно знаешь же, что в данном конкретном случае более удобных способов не существует.
Небезопасно: мало ли что будет введено с клавиатуры и всё это выполнится без какого-либо контроля.
Но иногда бывает полезно: когда ты точно знаешь, зачем это делаешь, и точно знаешь же, что в данном конкретном случае более удобных способов не существует.
Анатолий Снигоренко
А каким образом могут что-то вредоносное внести? У меня калькулятор с использованием функции eval, для проекта школьного сделан.
Если требуется высокая скорость исполнения кода, тогда такая конструкция как eval будет существенно замедлять работу программы. Если же это обстоятельство не критично или не очень критично, тогда смело можно использовать eval, например, для ввода функций в строковом виде.
Анатолий Снигоренко
Спасибо
Использование этой функции может представлять большую угрозу безопасности, так как она позволяет злоумышленникам запускать произвольный код. По этой причине рекомендуется избегать использования eval() и использовать более безопасные (и быстрые!) альтернативы для общих случаев использования. Например, вместо использования eval() для динамического доступа к свойствам можно использовать скобочные обозначения.
Анатолий Снигоренко
Ну а у меня это всё локально, разве может быть опасность?
Потому что внутри eval код основанный на известных всем программистам алгоритмах. Тру-программист и будет реализовывать этот функционал через эти алгоритмы, с внесением контроля. А примитивный текстовый ввод с eval - прямое приглашение в гости всем злоумышленникам со всех краев Земли, мол, добро пожаловать, гости НЕхорошие
Анатолий Снигоренко
А как узнать, опасен ли написанный код?
eval не нужно использовать всегда, он подойдет, если вы хотите выполнить что либо, из обычной текстовой строки, использовать его можно, но в меру
Анатолий Снигоренко
Спасибо
Похожие вопросы
- В чем разница между этими двумя вариантами написания кода функции?
- Написание кода на питоне
- Массивы Python. Помощь в написании кода
- Решить задачу без метода "eval" на пайтоне
- Можете помочь! Нужен код для Python, что бы он заменял определенный текст в файле
- Можете подсказать, почему код не работает?
- Помогите чайнику в Питоне. Как правильно перейти на другую строку в коде, чтоб он не запустился раньше времени?
- Почему не компилируется код?
- Проблема с кодом в Python
- С++ написать код для техникума.