content_tag :h2, '<b>太字</b>'
は、
<h2><b>太字</b></h2>
とかなりません。
第 4 引数の escape は属性のエスケープに関するもので、
content_tag :h2, 'hoge', :style => '<b>太字</b>'
の結果は
<h2 style="<b>太字</b>">hoge</h2>
になります。
まあよく考えればわかるはずなんですが、ふつうに XSS 可能にしてました。終わってます。
Rails のヘルパーはだいたいエスケープしてくれるから、変な油断をしてました。