Ne XSS / CSRF saldırıları (varsa) bir video gömer izin verirken farkında olmak?

2 Cevap php

Ben kullanıcıların video sitesi (YouTube API kullanarak yüklemek için) izin verilecek, ancak daha da önemlisi (benim için) onlar da bir video embed kodlarını göndermek için izin verilecek bir web sitesi için bir proje (atanmış oldum sayıda video sitelerinden YouTube, Vimeo vb gibi).

Having no experience with allowing users to embed video:
How can I best protect against cross site scripting and/or cross site request forgery attacks specifically for video embedding? What are some of the common pitfalls to watch for?

Minumum ben <object>, <param> ve <embed> hariç tüm etiketleri şerit düşünürdüm. Ama bu yeterli olmayacak bir duygu o olacak var mı?

edit
Also:
Do you think allowing only known video domainnames in the <embed src= and <param name="movie" value= attributes is enough to prevent rogue flash movies from being embedded in those attributes?
/edit

Bu önem ise, ortam olacaktır:

  • PHP / Zend Framework
  • MySQL

Bonuspoints:
Is there a common minimum golden rule/code template for video embed codes that are valid across all video sites that I could use to filter the input?

2 Cevap

İlk ve en tehlikeli XSS (?) Bu flaş kullanıcı girişi yapabilirsiniz onun / onun veri giriş sayfalarındaki videoları embed etmeyin ... sizin DOM okuyabilir. Giriş formları ayrılmış olmalıdır.

Genellikle flaş benzeyen bir kod kullanır gömer:

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>

Metacafe:

<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>

Gömülmüş içerik sağlamak için en iyi çözüm kullanılabilir örneklerinden niteliklerin embed, param, object ve liste hariç etiketleri şerit etmektir.

Bazı nitelikler Çapa'nın href yanı sıra javascript kodu çalıştırabilir, hatırlıyorum ...

Edit: Allowing only trusted sites in src and param's value attribute is kinda good way to prevent hAx0rs from doing bad things but it's not flawles. Another big thing: read more about allowScriptAccess. Its a Param's attribute you should remove or set to sameDomain / never. It will prevent SWF from running javascript :)

Neden sadece, tüm siteleri ziyaret onların embed kodu kaydetmek, ve sonra sadece kullanıcıların gerekli sitenin parametreleri göndermek için izin vermez?