Gaspard Bucher a écrit, le 09/24/2008 10:11 AM :
> Le 23 sept. 08 à 13:30, Lionel Bouton a écrit :
>
>   
>> Gaspard Bucher a écrit, le 09/23/2008 12:36 PM :
>>     
>>> I thought to use the taint/untaint mechanisme included with ruby to
>>> enhance security in zena. I have read that
>>> using taint is not that good for the following reasons:
>>>
>>> * It's not working on certain implementations of ruby (JRuby,
>>> IronRuby, ...)
>>> * It's a lot of work to make work (lots of tiny taint management code
>>> everywhere)
>>>
>>> I think I will just abandon this "taint" idea and continue writing
>>> careful code and tests.
>>>
>>> What do you think ?
>>>
>>>       
>> safe_erb uses tainted? to make sure you properly sanitize the various
>> inputs of your application. You might want to look at it.
>>     
> safe_erb is a nice idea, but it still means you have to untaint each  
> time you do a sanity check like
> return parser_error("invalid name #{name.inspect}") unless name =~ / 
> ^[a-zA-Z_]$/
> name.untaint # <<< line to add
>   

Yes nothing is free.

> ...
>
> You cannot remove these lines (with some kind of conditional  
> compilation)

Compilation ?

What you do is simply redefine your sanitizing method (that you should 
already have by the way) to untaint in dev mode, no more no less. 
safe_erb does it for html_escape, escape_once and strip_tags for example.
In production there's zero impact : you original sanitizing methods run 
unmodified and you don't even have to put safe_erb in vendor/plugins there.

This is how it works for us.

Lionel

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to