質問: ユーザーが記事を投稿できるようなサイトで、youTubeなどの動画サイトの動画を貼り付けできるように`iframe`タグを許可したいのですが、それはセキュリティ的に見て危険でしょうか? 危険ならば何か対策などありますでしょうか。 ちなみにサイトは`rails`で開発しています。 よろしくお願いします。
回答: 危険です。 フィッシングなど悪意のある改竄で`iframe`が埋め込まれる場合もありますので、 危険であることを認識した状態から出発点として開発されたほうがいいでしょう。 動画などを埋め込めるのと同時に、他人のブラウザに悪意のあるサイトを自動表示可能なWebアプリとなります。 HTML5からは`sandbox`属性などで`iframe`上の動作を制限できますが、機能が制限されることで貼り付けたかった機能を実現できない可能性もあります。 また何かの理由で`iframe`の指定を修正したくなった場合(たとえばHTML4とHTML5でiframeの持つ属性が異なります)、ユーザーが好きに貼り付けたコードを修正するのは大変だと思います。 使わせない方が一番とは思いますが、仮にどうしても必要であれば(LAN内且つ仲間内でしか利用しないなど)、今思いついたのは以下の2つです。 * URLや動画のIDだけを指定させる URLのチェックは行い、できればドメインも限定的にするなど安全なサイトかのチェックは別途を行った上で ひな形にサーバー側で当てはめるようにするという方法が考えられます。 基本的にはサイトに貼り付けても良いようなサイトであれば、ひな形を用意しているはずですのでできればそれを利用した方が安全と思われます。(そこをもっと手軽に且つ制限なくいろいろなサイトでやりたいという考えなのだとは思いますが) * ユーザーに許可を求める 自動的に埋め込まず初期状態はソースを見せて、なにかユーザーが許可アクションを起こした場合のみ実行させる。 一般的に多くの人は自分は悪いくじを引かないと思ってますので、多くのユーザーが何も疑わずに再生ボタンを押してしまうと思うので効果は期待しない方がいいですが、 実行はユーザーにゆだねる(wikiなどで「これから先は外部のサイトです」というのと同じですね)。