Какие XSS / CSRF-атаки (если таковые имеются) следует учитывать при разрешении встраивания видео? - PullRequest
3 голосов
/ 18 марта 2010

Мне был назначен проект для веб-сайта, где пользователям будет разрешено загружать видео (с помощью API YouTube), но, что более важно (для меня), им также будет разрешено отправлять коды для встраивания видео (с многочисленных видео-сайтов, YouTube, Vimeo и т. Д. И т. Д.).

Не имея опыта разрешения пользователям вставлять видео:
Как лучше всего защитить себя от межсайтовых сценариев и / или атак подделки межсайтовых запросов специально для встраивания видео? На какие распространенные ошибки стоит обратить внимание?

При минимуме я хотел бы удалить все теги, кроме <object>, <param> и <embed>. Но я чувствую, что этого будет недостаточно, не так ли?

1012 * редактировать *
Кроме того:
Считаете ли вы, что разрешение только известных доменных имен видео в атрибутах <embed src= и <param name="movie" value= является достаточным для предотвращения встраивания в эти атрибуты мошеннических флэш-фильмов?
/ редактировать

Если это важно, среда будет:

  • PHP / Zend Framework
  • MySQL

бонус-очков:
Существуют ли общие минимальные золотые правила / шаблоны кодов для кодов для встраивания видео, которые действительны для всех видео-сайтов, которые я мог бы использовать для фильтрации входных данных?

Ответы [ 2 ]

2 голосов
/ 19 марта 2010

Первое и самое опасное xss (?) - это то, что flash может читать вашу DOM ... Не вставляйте видео на страницы, где пользователь может ввести свои данные для входа в систему. Регистрационные формы должны быть разделены.

Обычно Flash Embed использует код, похожий на:

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>

Наилучшим решением для включения встроенного содержимого является удаление тегов за исключением embed, param, object и списка атрибутов из примеров, которые можно использовать.

Помните, что некоторые атрибуты могут запускать код JavaScript, а также ссылку на ссылку ...

Edit: Разрешение только доверенных сайтов в атрибуте value src и param - хороший способ предотвратить плохие действия hAx0rs, но это не является недостатком. Еще одна важная вещь: узнайте больше о allowScriptAccess. Это атрибут Param, который вы должны удалить или установить sameDomain / never. Это предотвратит запуск SWF javascript:)

1 голос
/ 18 марта 2010

Почему бы вам просто не посетить все сайты, не сохранить их код для встраивания, а затем позволить своим пользователям отправлять необходимые параметры сайта?

...