On Mon, Nov 15, 2010 at 07:56:54PM +0100, Manlio Perillo wrote: [...] > secimport ? un import hook che permette di verificare ciascun modulo > importato usando una database di "firme" di ciascun modulo. > Una "firma" ? semplicemente un hash (personalizzabile, tramite il modulo > hashib.new) del file dove il modulo si trova. > [...] > > In fase di installazione verr? creato uno script > `build_signature_database.py`, che si occupa di creare il database (un > semplice dizionario) di *tutti* i moduli Python accessibili dalla > instanza dell'interprete utilizzata. > > Al momento lo script include anche alcuni moduli non importabili (non ? > un problema ma ? da sistemare). > > > IMPORTANTE: la sicurezza ? tutta da verificare!
qualche pensiero sparso a proposito. prima di tutto il modulo stesso deve essere importato e prima di essere importato non c'? nessun controllo sul modulo stesso, ergo basta modificare il modulo `secimport`. quando fai il controllo del file `__init__.py` si deve controllare anche i relativi `.pyc` e `.pyo`, infatti basta modificare a piacere il file `__init__.py`, copiare il bytecode nella giusta posizione, il file `__init__.py` rimane quello originale ma viene modificato l'mtime. `secimport` controlla il file `__init__.py` ma l'importer python caricher? il bytecode modificato. di questo punto non sono sicuro, ma non vengono effettuati controlli sulle estenzioni C, l'unico controllo ? un `assert` che come ho detto nell'altro thread pu? essere semplicemente eliminato compilando il codice python con le relative ottimizzazioni. gli `assert` servono solo per debug ed errori di programmazione. il file con gli hash dei vari moduli ? facilmente modificabile rendendo vano tutto il lavoro fatto. inoltre non ? da scartare il fatto che per ogni piccola modifica bisogna ricalcolare il relativo hash, questo rende la distribuzione pi? tediosa. come è stato detto bisogna fare un ragionamento di costi/benefici e lo stesso farà chi cerca di modificare il tuo programma. se il programma non interessa a nessuno tutto questo lavoro è inutile, senza considerare che tutto questo ha un costo che non porta nessun beneficio all'utente finale (il programma non sarà più efficiente/economico/robusto/ecc.) m. -- Cosa volete? Questo diavolo d'uomo ha sempre le tasche ripiene di argomenti irresistibili. -- Pierre Augustin Caron de Beaumarchais _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python