When you encouter an unsafe string that you actually made html_safe
before, perhaps you called one of the following methods on it:
"capitalize", "chomp", "chop", "delete", "downcase", "gsub", "lstrip", "next", "reverse", "rstrip", "slice", "squeeze", "strip", "sub", "succ", "swapcase", "tr", "tr_s", "upcase"
All these methods are possibly unsafe, so they will return an unsafe String
even if called on a SafeBuffer
. If used for in-place replacements (e.g. sub!
instead of sub
), a TypeError
is raised.
This is to prevent tricks like my_safe_string.gsub!(/.*/, params[:user_input])
.
Posted by Dominik Schöler to makandra dev (2011-06-24 10:57)