Untrusted code execution
Random832
random832 at fastmail.com
Wed Apr 6 09:14:56 EDT 2016
On Tue, Apr 5, 2016, at 21:43, Steven D'Aprano wrote:
> As Zooko says, Guido's "best argument is that reducing usability (in
> terms
> of forbidding language features, especially module import) and reducing
> the
> usefulness of extant library code" would make the resulting interpreter
> too
> feeble to be useful.
You don't have to forbid module import. The sandbox could control what
modules can be loaded, and what happens when you try to load a module.
import sys
module = type(sys)
fm = {}
def fimp(name, *etc):
# In a real implementation, this could also load whitelisted modules
try:
return fm[name]
except KeyError:
raise ImportError("Tried to load restricted module " + name)
fm['builtins'] = fb = module('builtins')
fb.int = int
fb.str = str
fb.len = len
fb.print = print
fb.__import__ = fimp
fm['sys'] = fsys = module('sys')
fsys.modules = fm
exec("""
import sys
print(sys.modules.keys())
""", {'__builtins__': fb})
More information about the Python-list
mailing list