Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 20, 2011 11:55:08

iBiZoNiX
От: Пирятин
Зарегистрирован: 2011-07-05
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

list -> file -> list

А не проще так?

lis = eval(open('a.txt','r').read())



Офлайн

#2 Авг. 20, 2011 12:19:44

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

list -> file -> list

iBiZoNiX
eval = зло



Офлайн

#3 Авг. 20, 2011 20:16:57

iBiZoNiX
От: Пирятин
Зарегистрирован: 2011-07-05
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

list -> file -> list

Enchantner
iBiZoNiX
eval = зло
Почему?



Офлайн

#4 Авг. 20, 2011 21:23:24

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

list -> file -> list

iBiZoNiX
ну, в вашем примере вы как минимум читаете непойми что из файла и сразу исполняете. Достаточно вставить в файл строчку subprocess.Popen() и каюк.



Офлайн

#5 Авг. 20, 2011 22:47:10

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

list -> file -> list

>>> 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



Офлайн

#6 Авг. 21, 2011 22:33:04

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

list -> file -> list

bazooka
логично, потому что надо import subprocess. Это неважно, просто во внешний файл может попасть что угодно от кого угодно. eval - зло :)



Офлайн

#7 Авг. 22, 2011 02:13:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

list -> file -> list

да import subprocess может выше в самом скрипте быть

Enchantner
Это неважно, просто во внешний файл может попасть что угодно от кого угодно. eval - зло
а сам скрипт - это внутренний файл ?



Отредактировано (Авг. 22, 2011 02:14:42)

Офлайн

#8 Авг. 22, 2011 10:44:31

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

list -> file -> list

py.user.next
На скрипт можно выставить права. На внешний файл тоже, но если он динамически создается - с этим еще надо поковыряться. Не проще ли использовать стандартизированные форматы во избежание?



Офлайн

#9 Авг. 23, 2011 02:10:39

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

list -> file -> list

Enchantner
можно выставить права. На внешний файл тоже
можно положить его в недоступный каталог

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

Enchantner
Не проще ли использовать стандартизированные форматы во избежание?
думаю, лучше использовать то, что для этого предназначено
а eval всегда понимать, как исполнитель чего угодно



Офлайн

#10 Авг. 23, 2011 09:56:47

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

list -> file -> list

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

В общем, думаю, инцидент исчерпан :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version