タグをサニタイズする

railsでブログや掲示板みたいなものを作ろうとすると、入力でタグの利用を許可したい場合が出てきますが、さりとてむやみに許可するとXSSの温床になってしまいます。。。

そんなわけで、使えるタグや属性を指定し、それ以外のタグや属性は許可しないようにしたいわけですが、railsにはそれを自動でやってくれるsanitizeという便利なメソッドがあることを最近知りました。

使い方

hメソッドと一緒で、サニタイズしたい文字列変数の前にsanitizeとつける

(例示すほどでもないですが)
sanitize hoge
デフォルトで使用できるタグ

sanitizeメソッドで使えるタグを知りたいときは script/console で ActionView::Base.sanitized_allowed_tags.sort と入力してみると知ることができます。同じように使用できる属性地を知りたい場合は、 ActionView::Base.sanitized_allowed_attributes.sort と入力すると調べられます。

ちなみにrails2.3.2の場合、使用できるタグ、属性はこんな感じになっています。

使用できるタグ

“a”, “abbr”, “acronym”, “address”, “b”, “big”, “blockquote”, “br”, “cite”, “code”, “dd”, “del”, “dfn”, “div”, “dt”, “em”, “h1″, “h2″, “h3″, “h4″, “h5″, “h6″, “hr”, “i”, “img”, “ins”, “kbd”, “li”, “ol”, “p”, “pre”, “samp”, “small”, “span”, “strong”, “sub”, “sup”, “tt”, “ul”, “var”

使用できる属性

“abbr”, “alt”, “cite”, “class”, “datetime”, “height”, “href”, “name”, “src”, “title”, “width”, “xml:lang”

使用できるタグを追加する

environmetsに↓のように使用したいタグ・属性を追加すればOK

config.action_view.sanitized_allowed_tags = 使用したいタグ1, 使用したいタグ2,・・・
config.action_view.sanitized_allowed_attributes = 使用した属性値1, 使用したい属性値,・・・

こんな便利なのになんで気がつかなかったんだろう。。。

あわせて読みたい


ダオカオスの人気記事

Leave a comment

0 Comments.

Leave a Reply


[ Ctrl + Enter ]