Top > 開発ガイド > Rails Plugins > rails_protection > HTMLタグのサニタイジング

HTMLタグのサニタイジング

概要

文字列をホワイトリスト形式でサニタイジングするためのヘルパメソッドを利用できます。ホワイトリストで指定した安全なタグ及びその属性以外をHTMLコード内から無効化・除去します。

利用可能なメソッド

View

* cs(str, options = {})
  * Note
    サニタイジングを行うためのヘルパメソッドです。

  * Options
    * :class_prefix
      class属性をホワイトリストに入れていた場合、その値に付与される接頭辞です。
      default => 'cs_'

    * :rule
      適用するホワイトリストを指定します。PluginのビルトインルールをSymbolで指定するか、
      独自のルールをHashで指定します。
      default => :default

  * Built-in Rules
    * :default
      一部の基本的なタグのみを許可します。また、それらのタグも属性は一切許可しません。

    * :tiny_mce
      WysiwygエディタであるTinyMCEが出力するHTMLタグを許可します。

  * Examples
    * <%= cs('<script type="text/javascript">alert();</script>', :rule = > :default) %>
           => "&lt;script type=&quot;text/javascript&quot;&gt;alert();&lt;/script&gt;"

    * <%= cs('<p class="test" onclick="alert();">test</p>', :rule => :default) %>
           => "<p>test</p>"

    * <%= cs('<script type="text/javascript">alert();</script>', :rule = > :tiny_mce) %>
           => "&lt;script type=&quot;text/javascript&quot;&gt;alert();&lt;/script&gt;"

    * <%= cs('<p class="test" onclick="alert();">test</p>', :rule => :tiny_mce) %>
           => "<p class="cs_test">test</p>"

ホワイトリスト

ホワイトリストを独自に作成する場合はHashで指定します。ホワイトリストは全てHashと正規表現で構成されます。第一階層のHashのキーがHTMLタグに該当します。第二階層のHashのキーがAttributeに該当します。第二階層のHashの:styleに限り第三階層のHashを定義可能で、そのキーは個別のスタイルに該当します。

例:

<%= cs(str, {
  :br => {
    :empty_tag      => true,
  },
  :div => {
    :class          => /\A[-_a-zA-Z0-9]+\Z/mn,
    :style          => {
      :'font-style'         => /\Aitalic\Z/mn,
      :'font-weight'        => /\Abold\Z/mn,
      :'margin-left'        => /\A[0-9]+px\Z/mn,
      :'text-align'         => /\Acenter|left|right\Z/mn,
      :'text-decoration'    => /\Aline-through|underline\Z/mn,
    },
  },
}) %>