3

私は、ユーザーが(YouTube APIを使用して)ビデオをアップロードできるWebサイトのプロジェクトを割り当てられましたが、さらに重要なことに(私にとって)、(多数のビデオサイト、YouTube、Vimeoから)ビデオ埋め込みコードを送信することも許可されます。などなど)。

ユーザーに動画の埋め込みを許可した経験がない:
クロスサイトスクリプティングやクロスサイトリクエストフォージェリ攻撃、特に動画の埋め込みを防ぐにはどうすればよいですか?注意すべき一般的な落とし穴は何ですか?

<object>少なくとも、、、<param>およびを除くすべてのタグを削除すると思います<embed>。でも、これでは足りないと思いますよね?


また、編集
:属性 で既知のビデオドメイン名のみを許可することで、不正なフラッシュムービーがこれらの属性に埋め込まれるのを防ぐのに十分だと思い<embed src=ます<param name="movie" value=か?
/編集

重要な場合、環境は次のようになります。

  • PHP/Zendフレームワーク
  • MySQL

ボーナスポイント:
入力のフィルタリングに使用できるすべてのビデオサイトで有効な、ビデオ埋め込みコードの共通の最小ゴールデンルール/コードテンプレートはありますか?

4

2 に答える 2

2

最初で最も危険なxss(?)は、フラッシュがDOMを読み取ることができることです...ユーザーがログインデータを入力できるページにビデオを埋め込まないでください。ログインフォームは分離する必要があります。

通常、フラッシュ埋め込みは次のようなコードを使用します。

Youtube:

<object width="425" height="350">
  <param name="movie" value="http://www.youtube.com/v/AyPzM5WK8ys" />
  <param name="wmode" value="transparent" />
  <embed src="http://www.youtube.com/v/AyPzM5WK8ys"
         type="application/x-shockwave-flash"
         wmode="transparent" width="425" height="350" />
</object>

Vimeo:

<object width="400" height="225">
  <param name="allowfullscreen" value="true" />
  <param name="allowscriptaccess" value="always" />
  <param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10239065&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />
  <embed src="http://vimeo.com/moogaloop.swf?clip_id=10239065&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed>
</object>
<p><a href="http://vimeo.com/10239065">La Fete (HD - 2010)</a> from <a href="http://vimeo.com/animalcolm">Malcolm Sutherland</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

メタカフェ:

<embed src="http://www.metacafe.com/fplayer/4317045/bmx_face_slide.swf" width="400" height="345" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowFullScreen="true" allowScriptAccess="always" name="Metacafe_4317045"> </embed>
<br><font size = 1><a href="http://www.metacafe.com/watch/4317045/bmx_face_slide/">BMX Face Slide</a> - <a href="http://www.metacafe.com/">Free videos are just a click away</a></font>

埋め込みコンテンツを有効にするための最良の解決策は、使用可能なサンプルから、埋め込み、パラメーター、オブジェクト、および属性のリストを除いてタグを削除することです。

一部の属性は、JavaScriptコードとアンカーのhrefを実行できることを忘れないでください...

編集: srcとparamのvalue属性で信頼できるサイトのみを許可することは、hAx0rsが悪いことをするのを防ぐための良い方法ですが、欠陥ではありません。もう1つの重要な点は、allowScriptAccessの詳細を読むことです。そのParamの属性は、削除するか、sameDomain/neverに設定する必要があります。SWFがjavascriptを実行するのを防ぎます:)

于 2010-03-18T23:29:51.007 に答える
1

すべてのサイトにアクセスし、埋め込みコードを保存してから、ユーザーに必要なサイトのパラメーターの送信のみを許可してみませんか?

于 2010-03-18T17:24:50.550 に答える