Walter Tetzner <robot.ninja.saus...@gmail.com> writes:

> On Wednesday, May 9, 2012 9:35:57 AM UTC-4, Tassilo Horn wrote:
>
>> I don't think code-as-data contributes to code injection
>> vulnerability, neither positively nor negatively.  Simply don't
>> `eval` code/data from sources you don't trust.
>
> I think it does contribute through the reader. If you are using
> Clojure sexps as your data format, and are calling `read' or
> 'read-string', you have an opening for code injection.

Ah, right, I've forgotten about the #=() syntax.

But if you `print` and `read` your data to/from files/databases/whatever
and there's a #=(explode-system) in it, then your system has been
compromised already and you have a problem anyway.

> Calling
>
> (binding [*read-eval* false]
>   (read-string x))
>
> is clunky, and it's really easy to forget to bind *read-eval* to
> false.
>
> I feel like *read-eval* should default to false, and you should have
> to explicitly bind it to true.

Yes, probably.  And possibly the major use-cases of #=() can be handled
with the new tagged literals in a better and safer way.

Bye,
Tassilo

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to