CGI.escapeHTML
かなり悪いですが、CGI.unescapeHTML
完全に中断されています。例えば:
require 'cgi'
CGI.unescapeHTML('…')
# => "…" # correct - an ellipsis
CGI.unescapeHTML('…')
# => "…" # should be "…"
CGI.unescapeHTML('¢')
# => "\242" # correct - a cent
CGI.unescapeHTML('¢')
# => "¢" # should be "\242"
CGI.escapeHTML("…")
# => "…" # should be "…"
すべての数値コードに加えて、、、、およびをunescapeHTML
知っているようです。そして、それらの最後の4つについてのみ知っています-それは数値コードを何もしません。HTMLは、知っている4つを除くほとんどの文字のリテラルバージョンを許可するため、エスケープは一般にそれほど堅牢である必要はないことを理解しています。しかし、逃げるのは本当に良いはずです。&
<
>
"
escapeHTML
CGI.escapeHTML
少なくとも逃げるのに、もっと良いツールはありますか?