エスケープについて
Sinatra のテンプレートは、erb を使用しています。標準では「 <%= %> 」は、エスケープされません。
eRuby(erb)は、Ruby のコードを埋め込むことができるテンプレート言語の名前です。ちなみに、Rails では「 Erubi 」を改造したものを使用しています。
ビューに以下のタグを埋め込むと、Javascript が実行されます。
<%= '<script>alert("XSS")</script>' %>
上記の値がフォームなどで入力され、データベースに保存されるとします。その後、HTML ファイルに上記の値が埋め込まれ、実行されると予期せぬ動作をすることになります。
そのため、Javascript が実行されないように、「 < > 」を特殊文字に変換してエスケープします。そうすることで予期せぬ動作を引き起こさないようにできます。
Sinatra でエスケープするには、Rack::Utils の escape_html メソッドを使います。ビューで利用するには、helper メソッドを作成して利用します。