[Python] alternative ad eval

Manlio Perillo manlio.perillo a gmail.com
Mar 18 Mar 2014 14:20:14 CET


2014-03-18 13:43 GMT+01:00 Balan Victor <balan.victor0 a gmail.com>:

>
>> Riguardo "value ** value" temi un attacco di tipo DoS?
>>
> No no questo codice mi serve nella parte backend. Temo che un utente, per
> semplice distrazione, faccia andare in crash l'applicazione.
>
>
Attacco DoS inconsapevole :)

In questo caso la soluzione semplice è eseguire il codice in un processo
separato, limitando l'utilizzo della CPU (ci sono diversi metodi più o meno
semplici e/o efficaci, a seconda del sistema operativo).

>
>
>> In questo caso se vuoi limitare anche le possibili espressioni, l'unica
>> alternativa e scriverti un tuo parser, come ti hanno già suggerito.  Dai
>> una occhiata al modulo ast di Python.
>>
> L'ho guardato .... ma per me è ancora il buio completo ... ho bisogno di
> farmi le basi ... in ogni caso sto provando con pyparsing adesso XD
>

Non è una cosa banalissima, io proverei prima con qualcosa di esistente
come ho scritto sopra. Tra l'altro se vuoi proteggerti da codice che può
caricare troppo la CPU devi forse prevedere diverse regole, e rischi di
perderci tempo.  Inoltre, nel codice che hai postato, dovresti proteggerti
dalle eccezioni, ad esempio la divisione per zero.


Ciao  Manlio
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140318/4b798ec9/attachment.html>


Maggiori informazioni sulla lista Python