On 8/14/10 5:06 PM, Steven D'Aprano wrote:
> On Sun, 15 Aug 2010 01:24:00 +0200, Roland Koebler wrote:
> 
>> I had the same problem, and so I created a "pseudo-sandbox" for
>> embedding Python in templates. This "pseudo-sandbox" creates a
>> restricted Python environment, where only whitelisted functions/classes
>> are allowed. Additionally, it prevents things like '0 .__class__'.
> 
> Hmmm... is that meant just as an illustration of a general technique, or 
> do you actually have something against the class of 0? 0 .__class__ seems 
> pretty innocuous to me:
> 
>>>> type(0) is 0 .__class__ is int
> True

Assuming you have a totally restricted environment, where none of the
normal built-ins are available-- notably "type"-- in theory I thought
once that you could exec pretty safely. Because there's just no access
to anything!

But, alas, someone showed me I was wrong. 0 .__class__ can lead you to
"type".

And type.__subclasses__ happily leads you to everything in the world.

I solve this by just refusing to allow getattr, and __ anywhere in the
file to be saved just gets turned into xx, so its impossible (I think)
for users to access or use any special method.

-- 

   Stephen Hansen
   ... Also: Ixokai
   ... Mail: me+list/python (AT) ixokai (DOT) io
   ... Blog: http://meh.ixokai.io/

Attachment: signature.asc
Description: OpenPGP digital signature

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to