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

_______________________________________________
Community-list mailing list
Community-list@lists.vpsfree.cz
http://lists.vpsfree.cz/listinfo/community-list
_______________________________________________
Community-list mailing list
Community-list@lists.vpsfree.cz
http://lists.vpsfree.cz/listinfo/community-list