ユーザに対してWYSIWYGエディタを提供して、一部のHTML要素をホワイトリストで許可しようと考えています。テキスト装飾関連とimg要素・a要素を許可する予定です。
それに加えてYouTubeのコード埋め込みも実現したいのですが、object要素param要素やembed要素を許可すると、XSSやCSRFなどのリスクがあるでしょうか?
それはやはり無視できませんね... objectは意外と万能タグなので...
objectはiframeとほぼ同様の動作も実現できてしまいますし、swfファイルの読み込みにも使われます。
一番よいと思われるのは、存在しない独自形式タグを自動で置き換えるような形だと思います。
たとえば、<<YOUTUBE URL=http://hoge>> を自動でYouTube埋め込みようタグに変換する、等。
テンプレートにjavascriptを組み込んでおくなどでも良いかと。
ただただ既にある要素を許可、禁止にしているだけでは危険かもしれませんね...
object を許可する時点で Flash であったり、SilverLight も埋め込めるわけで、ほぼなんでも出来ます。
それでも許可したい場合は、youtube であれば
<youtube:MOVIE-ID>
のように独自タグを用意して、表示する際に埋め込む方法はどうでしょうか?
mixi も同じような形で、YOUTUBE の埋め込みに対応してます。
ありがとうございます。
ありがとうございます。