希望这是一个简单的问题 . 我在我的网站上用PHP编写了一个简单的自定义论坛 . 出于安全原因,我不允许论坛帖子中的任何HTML . 我只允许某些BBCode标签 . 不过我想允许嵌入的YouTube视频 .
所以我的问题是:验证YouTube嵌入代码的最佳(最安全)方法是什么? YouTube目前正在使用iframe嵌入视频,但显然我不能只允许使用iframe标记 . 我还需要确保iframe的src是YouTube网址,并确保iframe代码中没有其他恶意代码 .
你应该允许用户使用这样的东西:
[youtube]http://www.youtube.com/watch?v=te-TiL9YVaE[/youtube]
然后在显示消息时使用PHP将其转换为嵌入代码:
function bb_youtube($post) { return preg_replace( "#\[youtube].*?v=([^&]+).*?\[/youtube\]#im", '<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/$1?fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/$1?fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>', $post ); }
最安全的方法是创建一个[youtube]标签 . http://www.youtube.com/watch?v=PVHzXnS5Gms 可能会成为 [youtube v='PVHzXnS5Gms'][/youtube] (或您选择的语法) .
http://www.youtube.com/watch?v=PVHzXnS5Gms
[youtube v='PVHzXnS5Gms'][/youtube]
要将其转换为YouTube嵌入代码,请取 <object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/VIDEO_ID?fs=1&hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/VIDEO_ID?fs=1&hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object> 并将VIDEO_ID替换为标识符 .
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/VIDEO_ID?fs=1&hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/VIDEO_ID?fs=1&hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>
2 回答
你应该允许用户使用这样的东西:
然后在显示消息时使用PHP将其转换为嵌入代码:
最安全的方法是创建一个[youtube]标签 .
http://www.youtube.com/watch?v=PVHzXnS5Gms
可能会成为[youtube v='PVHzXnS5Gms'][/youtube]
(或您选择的语法) .要将其转换为YouTube嵌入代码,请取
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/VIDEO_ID?fs=1&hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/VIDEO_ID?fs=1&hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>
并将VIDEO_ID替换为标识符 .