概要
RailsでのHTMLエスケープとhtml_safeを使用する方法を記述致します。
HTMLエスケープとは
HTMLエスケープは、文字列内の特殊な文字(<
、>
、&
、'
、\
など)を対応するHTMLエンティティに置き換えることを指します。例えば、<
は<
、&
は&
になります。この処理は、ユーザーが入力したデータをそのままウェブページに表示するときに重要となります。ユーザーがHTMLタグを入力した場合、そのまま表示するとウェブページの構造を壊す可能性があります。
RailsにおけるHTMLエスケープ
Railsでは、ビューで表示するテキストはデフォルトでエスケープされます。これは、Railsのセキュリティ機能の一部で、スクリプト注入攻撃を防ぐためのものです。
例えば、以下のように<h1>
タグを含む文字列を表示しようとすると:
<%= "<h1>Hello, World!</h1>" %>
実際には、以下のようにエスケープされて表示されます。
<h1>Hello, World!</h1>
RailsでHTMLエスケープを回避する方法
エスケープを回避するにはhtml_safe
メソッドを使うことができます。これにより、HTMLタグがそのまま表示されます。
<%= "<h1>Hello, World!</h1>".html_safe %>
ただし、この方法は注意が必要です。ユーザーからの入力をそのままhtml_safe
メソッドでエスケープせずに表示すると、スクリプト注入攻撃につながる可能性があります。
そのため、ユーザーからの入力をエスケープせずに表示する場合は、他の対策(例えば、入力のサニタイズ)も合わせて行う必要があります。
まとめ
HTMLエスケープとそのRailsでの利用について記述致しましたが、注意点も含めて、適切にエスケープを管理することが必要です。