Php 允许视频嵌入时需要注意哪些XSS/CSRF攻击(如果有)?

Php 允许视频嵌入时需要注意哪些XSS/CSRF攻击(如果有)?,php,xss,csrf,embedded-video,Php,Xss,Csrf,Embedded Video,我被分配了一个网站项目,允许用户上传视频(使用YouTube API),但更重要的是(对我来说),他们还可以提交视频嵌入代码(来自众多视频网站、YouTube、Vimeo等) 没有允许用户嵌入视频的经验: 我如何才能最好地防止专门用于视频嵌入的跨站点脚本和/或跨站点请求伪造攻击?需要注意的常见陷阱有哪些 我想在最短的时间内去掉所有标签,除了、和。但我觉得这还不够,是吗 编辑 另外: 你认为在中只允许已知的视频域名吗?为什么不访问所有站点,保存它们的嵌入代码,然后只允许用户提交所需的站点参数?首先

我被分配了一个网站项目,允许用户上传视频(使用YouTube API),但更重要的是(对我来说),他们还可以提交视频嵌入代码(来自众多视频网站、YouTube、Vimeo等)

没有允许用户嵌入视频的经验:
我如何才能最好地防止专门用于视频嵌入的跨站点脚本和/或跨站点请求伪造攻击?需要注意的常见陷阱有哪些

我想在最短的时间内去掉所有标签,除了
。但我觉得这还不够,是吗

编辑
另外:

你认为在
中只允许已知的视频域名吗?为什么不访问所有站点,保存它们的嵌入代码,然后只允许用户提交所需的站点参数?

首先也是最危险的xss(?)是flash可以读取您的DOM。。。不要在用户可以输入其登录数据的页面上嵌入视频。登录表单应该分开

通常,flash embeds使用的代码类似于:

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>

维梅奥:

<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做坏事的一种好方法,但这并不是缺点。另一件大事:阅读有关allowScriptAccess的更多信息。它是一个参数的属性,您应该删除或设置为sameDomain/never。它将阻止SWF运行javascript:)

嘿,谢谢。我也想过这个。但这可能太麻烦了。我们希望允许尽可能多的视频网站。另外,我不想用太多的技术细节(知道要把什么参数放在哪里)来打扰人们。因此,基本上我们希望让它尽可能简单(复制/粘贴嵌入代码并完成)。好的,他们需要的是选择什么网站,然后复制/粘贴结果URL。这会更安全。约翰·约翰逊-你听说过用户友好吗D并非所有用户都来自IT部门;)@嘘,哈哈,摸一下。我只是在想,假设你将文件上传到youtube,那么你会得到一个链接:youtube.com/8asdja8将其复制到一个文本字段,然后检测该站点是什么(youtube),该站点与他们用于嵌入链接的特定代码相关,然后将它们组合在一起以获得一个安全嵌入的视频。@john Oh!;)是的!这无疑是用户最简单的方法!我想我们必须从Vimeo中去掉所有多余的标签,比如
。事实上,去除多余的属性。关于DOM,这也是一个很好的观点。我自己也不会想到这个。另外:你认为在<代码>中只允许已知的视频域名还有另一种方法吗,阅读youtube的API并尝试使用给定的URL嵌入SWF文件。。。就像Facebook一样