Wenn mein Code Module von Drittanbietern verwendet, die vertraut werden kann nicht, gibt es etwas Situation wie diese zu vermeiden:Schutz importierten Module von durch Drittanbieter-Code beschädigt werden
UntrustedModule.py:
import random
random.random = lambda : 4
MyModule .py:
import random
import UntrustedModule
print (random.random())
wo nur importieren dieses Modul Annahmen über andere, nicht verwandte bricht?
Nicht vertrauenswürdige Module können viel mehr tun, als nur Funktionen und ähnliches ersetzen. Führen Sie keine nicht vertrauenswürdigen Module aus. –
Diese Änderung sieht gut aus (siehe http://xkcd.com/221/). ;) – Matthias
Python ist nicht wirklich darauf ausgelegt, dies zu verhindern. Wenn dies eine Voraussetzung ist, sollten Sie entweder eine Sprache verwenden, die (wie Lua oder Javascript) ist, oder ein Sandbox-Schema erstellen, das die Module in einem anderen Prozess ausführt. – millimoose