Использование Eval Python и меры предосторожности

Eval Python является встроенной функцией, роль этой функции возвращать результат выражения строки, переданная. Представьте себе, назначение переменного, выражение справа от знака равенства, записанного в строке формата, строка в качестве аргумента Eval, Eval возвращаемого значения является результатом этого выражения.

Использование в функции питона Eval является очень гибким, но и очень опасно, безопасностью является самым большим недостатком. Эта статья как от гибкости и риски внедрения Eval.

1, мощность

Несколько примеров чувствуют себя трансформировали список строк, кортеж, ДИКТ-х.

 

Мощный бар, чтобы строки в Eval, Eval выражения дают вам возвращаемое значение.

Eval Синтаксис выглядит следующим образом:

 

 

выражение: String

глобал: переменная сфера, глобальное пространство имен, если это предусмотрено, должны быть объектом словаря.

Местные жители: переменная сфера, локальное пространство имени, если это предусмотрено, может быть любым объектом карты.

В сочетании с глобалов и местные жители смотрят на несколько примеров

Глобал переданного значения параметра { «возраст»: 1822},

 

 выход

 

 В сочетании с переменными местными жителями

 

 

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

Когда эти два параметра не являются пустыми, выглядят местным жителям первый параметр, а затем найти глобалов параметров, параметр местных жителей с тем же именем будет перезаписывать переменные GLOBALS в переменной.

2. Опасность

Eval удобно, но имейте в виду, что безопасность может быть преобразовано в выражение строки и исполнения, вы можете использовать для выполнения системных команд для удаления файлов и других операций.

Предположим, что злонамеренный ввод данных пользователем. Например:

Eval ( "__ импорта __ ( 'ОС'). Система ( 'Ls /home/pythontab.com/www/')")

Таким образом, после Eval (), вы увидите, что текущие файлы папки теперь перед выставочным пользователем. На самом деле, это предложение эквивалентно об осуществлении

 

os.system ( 'Ls /home/pythontab.com/www/')

Затем продолжайте печатать:

Eval ( "__ импорта __ ( 'ОС'). Система ( 'кошка /home/pythontab.com/www/test.sql')")

Афиши кода.

Снова команда удаления, файл исчез. такие как

Eval ( "__ импорта __ ( 'ОС'). Система ( 'гт /home/pythontab.com/www/test.data')")

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

 

рекомендация

отwww.cnblogs.com/programmer123/p/11739205.html