[Python] Python web messaggi in Post e link a file in differenti directory
Daniele Varrazzo
piro a develer.com
Gio 6 Giu 2013 23:28:52 CEST
On 2013-06-06 21:36, Daniele San Giovanni wrote:
> Ho dato un' occhiata veloce al configparser. Credo sia proprio ciò
> che mi
> serve. Domani lo vedrò con più calma.
> import ed eval sono 2 cose distinte. Import importa i moduli. Se un
> modulo
> manca all' interno del percorso di ricerca viene sollevata un'
> eccezione.
> Eval invece esegue la stringa che gli viene passata come blocco di
> codice.
> Poichè nel mio caso il link viene ricevuto in post un hacker potrebbe
> tranquillamente sostituirlo con del codice Python suo e farlo
> eseguire.
Non avevi detto che avresti passato il *nome* del file da eseguire? O
meglio, il nome di una cartella contenente un certo file da eseguire?
Non devi eseguire codice passato dall'utente, ma codice che hai sul
server. Basta verificare che l'utente non provi a cambiare cartella,
tipo passando ../.. come nome, ma questo è banale: basta usare abspath
per verificare se un utente sta provando a scappare.
Import ed eval non sono tanto distinti: import esegue eval (attraverso
execfile) e crea un oggetto modulo. La funzione che implementa import,
ovvero __import__, ha una semantica curiosa e cacha il modulo, quindi
usarla per fare configurazione è una rogna.
> Il configparser mi sa che va bene.
> Grazie mille!
Infatti: se non devi fare aritmetica o manipolazioni di stringhe nel
file di configurazione, o se non hai bisogno di oggetti complessi, alla
fine il vecchio file .ini va più che bene.
A presto,
--
Daniele
Maggiori informazioni sulla lista
Python