13. 3. 2020 v 19:19, Lukáš Němec
<lu.nemec(a)gmail.com>om>:
Ahoj,
Píšeš, že uživatel předá hodnotu „1_1“ která jde následně do literal_eval. Jsi si jistý
že to je dobrý nápad? To je přeci totální díra do systému, kde může uživatel executnout
libovolný kód. Jestli jste spoléhali na SyntaxError doteď, tak se divím že vás nikdo
nehacknul jen for-fun.
Co je to za produkt, že potřebujete „literal_eval“ uživatelského vstupu? NIKDY, NIKDY by
neměl být kód z unsafe zdroje předán takovéto funkci.
Lukáš
13. 3. 2020 v 17:35, zd nex
<zdnexnet(a)gmail.com <mailto:zdnexnet@gmail.com>>:
No, ok chápu že to můžu na několika místech zkontrolovat, ale jde o to, že těch míst je
dost a hlavně to právě je i konzole. Moc mi nejde do hlavy proč i ten literal_eval to
povoluje a ty funkce. Proč to není pouze v py kódu bez uvozovek, ale je to i v řetězci.
Když to někdo bude mít v kódu, tak to pravděpodobně nebude řetězec. A jde o to, že toto
nové chování bylo přidáno ve verzi 3.6 > není to tam od začátku, pokud by to šlo
vypnout v těch funkcích, když je to řetězec, tak by mi to ani nevadilo, ale vlastně to ani
nejde změnit.
Ano, může to být i otázka na StackOverflow.
pá 13. 3. 2020 v 17:13 odesílatel Vojtěch Oram <flaiming(a)gmail.com
<mailto:flaiming@gmail.com>> napsal:
Ahoj,
to je asi spíše otázka na StackOverflow než VPSFree community list.
Ale podle mě ty hodnoty z uživatelského vstupu budou vždycky stringy (pokud to uživatel
nevolá jako CLI), takže si to můžeš sám ošetřit, než s tím budeš dál něco dělat. Zadání
1_1 a 11 by mělo být v pythonu 3 ekvivalentní.
Vojtěch Oram
Dne 13. 03. 20 v 15:55 zd nex napsal(a):
Ahojte,
mám dotaz na python. Už delší dobu přecházíme na Python3 (je to složitý a problematický a
nemáme žádnou významnou funkci co by to opodstatnila). Během té doby jsme našli 2 chyby
(pickle/shelve) v novém Pythonu a nyní jsme našel nový hodně velký problém.Je to nová
funkce PEP515 podtržítka v číslech. Tato funkcionalita zní možná naprosto skvěle pro
některé lidi, ale nám nyní dělá značnou neplechu.
Jde o to, že nyní všechny interní funkce jako je int/float/literal_eval při předání
"1_1" a podobně vytvoří číslo 11 a ne SyntaxError. Chápal bych, že tato funkce
bude ve zdrojovém kódu možná užitečná. Jenže pokud nyní uživatel předá "1_1",
tak systém pokračuje dál s novým číslem.
Moje otázka zní, znáte nějaký postup jak toto chování vypnout? Ono se to nezdá ale
int/float a literal_eval používáme opravdu hodně a všude řešit nějakou takovou kontrolu je
těžce proveditelné. V minulosti se podobně blbě chovala nula na začátku a to naštěstí
odstranili, ale nyní přidali tuto vlastnost.
Zkouším hledat na googlu, ale zatím jsem nenašel nic co by to umožnilo nějak změnit,
ideálně globálně.
--
Zdenek
Web:
www.pripravto.cz <http://www.pripravto.cz/>
_______________________________________________
Community-list mailing list
Community-list(a)lists.vpsfree.cz <mailto:Community-list@lists.vpsfree.cz>
http://lists.vpsfree.cz/listinfo/community-list
<http://lists.vpsfree.cz/listinfo/community-list>
_______________________________________________
Community-list mailing list
Community-list(a)lists.vpsfree.cz <mailto:Community-list@lists.vpsfree.cz>
http://lists.vpsfree.cz/listinfo/community-list