1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RailsでのHTMLエスケープとhtml_safeを使用する方法

Last updated at Posted at 2023-06-19

概要

RailsでのHTMLエスケープとhtml_safeを使用する方法を記述致します。

HTMLエスケープとは

HTMLエスケープは、文字列内の特殊な文字(<>&'\など)を対応するHTMLエンティティに置き換えることを指します。例えば、<&lt;&&amp;になります。この処理は、ユーザーが入力したデータをそのままウェブページに表示するときに重要となります。ユーザーがHTMLタグを入力した場合、そのまま表示するとウェブページの構造を壊す可能性があります。

RailsにおけるHTMLエスケープ

Railsでは、ビューで表示するテキストはデフォルトでエスケープされます。これは、Railsのセキュリティ機能の一部で、スクリプト注入攻撃を防ぐためのものです。

例えば、以下のように<h1>タグを含む文字列を表示しようとすると:

<%= "<h1>Hello, World!</h1>" %>

実際には、以下のようにエスケープされて表示されます。

&lt;h1&gt;Hello, World!&lt;/h1&gt;

RailsでHTMLエスケープを回避する方法

エスケープを回避するにはhtml_safeメソッドを使うことができます。これにより、HTMLタグがそのまま表示されます。

<%= "<h1>Hello, World!</h1>".html_safe %>

ただし、この方法は注意が必要です。ユーザーからの入力をそのままhtml_safeメソッドでエスケープせずに表示すると、スクリプト注入攻撃につながる可能性があります。

そのため、ユーザーからの入力をエスケープせずに表示する場合は、他の対策(例えば、入力のサニタイズ)も合わせて行う必要があります。

まとめ

HTMLエスケープとそのRailsでの利用について記述致しましたが、注意点も含めて、適切にエスケープを管理することが必要です。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?