limited python virtual machine (WAS: Another scripting language implemented into Python itself?)
Steven Bethard
steven.bethard at gmail.com
Tue Jan 25 16:26:13 EST 2005
Michael Spencer wrote:
> Steven Bethard wrote:
>
>> Michael Spencer wrote:
>>
>>> Safe eval recipe posted to cookbook:
>>> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/364469
>>
>> This recipe only evaluates constant expressions
>
[snip
>
> Indeed. But it's easy to extend this to arbitrary constructs. You just
> need to decide what code to emit for the other 50 or so ast node types.
> Many of those are boiler-plate binops.
Ahh, gotcha. Thanks for the clarification.
I haven't ever spent much time dealing with Python's ASTs, but my guess
is doing anything here is probably worth putting off until the AST
branch is merged into main CVS for Python 2.5. (I understand there are
supposed to be some substantial changes, but I don't know exactly what
they are or what they affect.)
> Right - the crux of the problem is how to identify dangerous objects.
> My point is that if such as test is possible, then safe exec is very
> easily implemented within current Python. If it is not, then it is
> essentially impossible.
>
[snip]
>
> It might still be possible to have a reliable test within a
> problem-specific domain i.e., white-listing.
Yeah, that was basically my intent -- provide a white-list of the usable
objects. I wonder how complicated this would be... You also probably
have to white-list the types of all the attributes of the objects you
provide...
Steve
More information about the Python-list
mailing list