2011年2月9日水曜日

サニタイズについて

Rails の場合 white list に基づいて3段階、RESTRICTED,BASIC,RELAXED
とサニタイズします。
XOOPSのコアにもこんなサニタイズのクラスが欲しいですね。
 
# html = Sanitize.clean(対象のhtml文字列, オプションのhash)
require 'rubygems'
require 'sanitize'

html = '<b><a href="http://foo.com/">foo</a></b>
<img src="http://foo.com/bar.jpg" />'
Sanitize.clean(html) # => 'foo'
Sanitize.clean(html, Sanitize::Config::RESTRICTED) # => 
'<b>foo</b>'
Sanitize.clean(html, Sanitize::Config::BASIC) # => 
'<b><a href="http://foo.com/" rel="nofollow">foo</a></b>'
Sanitize.clean(html, Sanitize::Config::RELAXED) # => 
'<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg" />'

カスタマイズでこんな事も

Sanitize.clean(html, :elements => ['a', 'span'],
    :attributes => {'a' => ['href', 'title'], 'span' => ['class']},
    :protocols => {'a' => {'href' => ['http', 'https', 'mailto']}})

0 件のコメント:

コメントを投稿