Найти - Пользователи
Полная версия: list -> file -> list
Начало » Python для новичков » list -> file -> list
1 2
iBiZoNiX
А не проще так?
lis = eval(open('a.txt','r').read())
Enchantner
iBiZoNiX
eval = зло
iBiZoNiX
Enchantner
iBiZoNiX
eval = зло
Почему?
Enchantner
iBiZoNiX
ну, в вашем примере вы как минимум читаете непойми что из файла и сразу исполняете. Достаточно вставить в файл строчку subprocess.Popen() и каюк.
bazooka
>>> eval('subprocess.Popen(["rm", "-rf", "/"])')

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
eval('subprocess.Popen(["rm", "-rf", "/"])')
File "<string>", line 1, in <module>
NameError: name 'subprocess' is not defined
Enchantner
bazooka
логично, потому что надо import subprocess. Это неважно, просто во внешний файл может попасть что угодно от кого угодно. eval - зло :)
py.user.next
да import subprocess может выше в самом скрипте быть
Enchantner
Это неважно, просто во внешний файл может попасть что угодно от кого угодно. eval - зло
а сам скрипт - это внутренний файл ?
Enchantner
py.user.next
На скрипт можно выставить права. На внешний файл тоже, но если он динамически создается - с этим еще надо поковыряться. Не проще ли использовать стандартизированные форматы во избежание?
py.user.next
Enchantner
можно выставить права. На внешний файл тоже
можно положить его в недоступный каталог

Enchantner
eval - зло
но почему-то на python.org об этом не знают

Enchantner
Не проще ли использовать стандартизированные форматы во избежание?
думаю, лучше использовать то, что для этого предназначено
а eval всегда понимать, как исполнитель чего угодно
Enchantner
py.user.next
а eval всегда понимать, как исполнитель чего угодно
Я про это и говорю :) Но в 99% случаев лучше без него, чем с ним.
py.user.next
но почему-то на python.org об этом не знают
А что вы ждали? Надписи красными буквами “не использовать, брешь в безопасности”? Есть и те, кто goto юзает и не парится.

В общем, думаю, инцидент исчерпан :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB