`eval(the_string, globals = {"__builtins__":None}, locals = {})`
should do it. This removes access from all functions. Add any
functions that are needed by adding them to the "locals" dictionary.

As stated in: 
http://stackoverflow.com/questions/661084/security-of-pythons-eval-on-untrusted-strings
and http://lybniz2.sourceforge.net/safeeval.html

On Sep 9, 11:50 pm, Mikie <thephantom6...@hotmail.com> wrote:
> I need to be able to input a string like this ---
> L1="[3,10,15,23,25,30,3,[5]*3]"
> Need the repeated values for the 5.  If I don't have repeated values
> your code works.
> I have done some error traping for "eval".  Users can not put
> something like "rm".
>
> On Sep 8, 2:38 pm, Robert Bradshaw <rober...@math.washington.edu>
> wrote:
>
> > On Sep 8, 2009, at 11:28 AM, Mikie wrote:
>
> > > Here is the function
> > > -------------------------------
> > > def BasicStats1a(exp1):
> > >     v = exp1
> > >     v1 = eval(v);Count_=len(v1)
> > >     sort_v1=sorted(v1)
> > >     M1 =stats.mode(v1); v3=eval(str(M1[0])); v4=eval(str(M1[1]))
> > >     R1 = stats.mean(v1);R2 = stats.median(v1)
> > >     R3 = stats.std(v1)
> > >     var_=R3**2
> > >     return R1,R2,R3,Count_,sort_v1,var_,v3,v4
> > > ------------------------------------------------------------
> > > You can see the eval's.  Is there a security problem with sage_eval?
>
> > Yes.
>
> > > The string comes from a form.
>
> > You should look up string processing in Python, I think that would  
> > help a lot in much of what you're trying to do here. For example,
>
> > sage: s = "1,2,3,4,100"
> > sage: [ZZ(x) for x in s.split(',')]
> > [1, 2, 3, 4, 100]
>
> > This is fast, safe, and more clear than the above.
>
> > - Robert
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to