Lo XSS / CSRF ataques (si lo hay) para estar al tanto de cuando se permite vídeo incrusta?

StackOverflow https://stackoverflow.com/questions/2471834

  •  20-09-2019
  •  | 
  •  

Pregunta

Me han asignado un proyecto para un sitio web en el que se permitía a los usuarios subir vídeos de (utilizando una API de YouTube) pero lo más importante (para mí) que también se les permitirá enviar códigos de integrar video (de numerosos sitios de vídeo, YouTube, Vimeo, etc., etc.).

Al no tener experiencia con permitiendo a los usuarios para encajar el vídeo:
Cuál es la mejor protección contra este tipo de ataque y / o ataques de falsificación de petición en sitios cruzados específicamente para la incrustación de vídeo? ¿Cuáles son algunos de los problemas más comunes que debe vigilar?

En un minumum Me gustaría pensar que tira de todas las etiquetas excepto <object>, <param> y <embed>. Pero tengo la sensación de que esto no será suficiente, ¿verdad?

editar
También:
¿Crees que permite nombres de dominio de vídeo sólo conocidos en la <embed src= y atributos <param name="movie" value= es suficiente para evitar que las películas de destello pícaro de ser incrustado en esos atributos?
/ editar

Si es de importancia, el ambiente será:

  • PHP / Zend Framework
  • MySQL

Los puntos de fidelidad:
¿Hay una regla de oro plantilla de mínimo común / código para incrustar códigos de vídeo que son válidas en todos los sitios de vídeo que podría utilizar para filtrar la entrada?

¿Fue útil?

Solución

Lo primero y más peligroso XSS (?) Es que el flash puede leer su DOM ... No incrustar vídeos en páginas donde el usuario puede introducir sus datos de acceso / ella. formas de la conexión deben estar separados.

Por lo general, Flash incorpora utiliza código que es similar a:

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>

La mejor solución para permitir contenido Embebido es despojar etiquetas con excepción para embed, PARAM, objeto y la lista de atributos de la las muestras que se pueden utilizar.

Recuerde, algunos atributos pueden ejecutar código JavaScript, así como href de anclaje ...

Editar Permitiendo sólo sitios de confianza en src y atributo de valor de parámetro es un poco buena manera de prevenir hAx0rs haga cosas malas, pero no es flawles. Otra gran cosa: leer más sobre allowScriptAccess. Su atributo de un Param se debe quitar o fijar a sameDomain / Nunca. Se evitará SWF de JavaScript que se ejecuta:)

Otros consejos

¿Por qué no acaba de visitar todos los sitios, guardar su código de inserción, y sólo permite que sus usuarios enviar parámetros del sitio requerido?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top