

ユーザーが記事を投稿できるようなサイトで、youTubeなどの動画サイトの動画を貼り付けできるように`iframe`タグを許可したいのですが、それはセキュリティ的に見て危険でしょうか？

危険ならば何か対策などありますでしょうか。

ちなみにサイトは`rails`で開発しています。

よろしくお願いします。


CC BY-SA 3.0
2014-12-20T05:07:17.283
2210
2014-12-20T09:54:55.957
2014-12-20T05:14:36.510
728
4971
question
ruby ruby-on-rails html5
記事投稿サイトで、iframeタグの投稿を許可することは危険ですか？


危険です。

フィッシングなど悪意のある改竄で`iframe`が埋め込まれる場合もありますので、
危険であることを認識した状態から出発点として開発されたほうがいいでしょう。

動画などを埋め込めるのと同時に、他人のブラウザに悪意のあるサイトを自動表示可能なWebアプリとなります。

HTML5からは`sandbox`属性などで`iframe`上の動作を制限できますが、機能が制限されることで貼り付けたかった機能を実現できない可能性もあります。

また何かの理由で`iframe`の指定を修正したくなった場合（たとえばHTML4とHTML5でiframeの持つ属性が異なります）、ユーザーが好きに貼り付けたコードを修正するのは大変だと思います。

使わせない方が一番とは思いますが、仮にどうしても必要であれば（LAN内且つ仲間内でしか利用しないなど）、今思いついたのは以下の2つです。

  * URLや動画のIDだけを指定させる  
URLのチェックは行い、できればドメインも限定的にするなど安全なサイトかのチェックは別途を行った上で
ひな形にサーバー側で当てはめるようにするという方法が考えられます。
基本的にはサイトに貼り付けても良いようなサイトであれば、ひな形を用意しているはずですのでできればそれを利用した方が安全と思われます。（そこをもっと手軽に且つ制限なくいろいろなサイトでやりたいという考えなのだとは思いますが）

  * ユーザーに許可を求める  
自動的に埋め込まず初期状態はソースを見せて、なにかユーザーが許可アクションを起こした場合のみ実行させる。
一般的に多くの人は自分は悪いくじを引かないと思ってますので、多くのユーザーが何も疑わずに再生ボタンを押してしまうと思うので効果は期待しない方がいいですが、
実行はユーザーにゆだねる（wikiなどで「これから先は外部のサイトです」というのと同じですね）。


CC BY-SA 3.0
2014-12-20T05:54:22.113
2212
2014-12-20T05:54:22.113
728
2210
answer


`iframe` に限らず、安全なWebサイトを作るという目的ならば、 IPA が出している
[安全なウェブサイトの作り方](https://www.ipa.go.jp/security/vuln/websecurity.html)
が良い資料ですので、 一度目を通されることをオススメしておきます。

# ちょっと質問の趣旨からは外れてしまうのですが、補足的に、より広範な基礎教養として。


CC BY-SA 3.0
2014-12-20T07:05:59.553
2217
2014-12-20T07:05:59.553
208
2210
answer


コメントにあった方の質問への回答になりますが、はてなブログの場合は **XSS対象となりうる情報** は **iframeで隔離**
しているようです。[QiitaにXSS脆弱性 -
Qiita](http://qiita.com/mpyw/items/8367f4e0983e734294da)に詳細があります。(ただし編集画面でセルフXSSが出来るようですが......[はてなブログにあったセルフXSS
脆弱性"&'<<>\ Advent Calendar 2014 (19日目) -
ooooooo_qの日記](http://ooooooo.hatenablog.com/entry/2014/12/19/000000))

Youtubeなど **信頼できるリソース**
を定めてそのURLのみ埋め込みコードに置換する(Wordpressのように)はありかと思いますが、そもそも信頼できるリソースを定義するのは難しいですよね。


CC BY-SA 3.0
2014-12-20T09:54:55.957
2234
2014-12-20T09:54:55.957
2376
2210
answer