Php 是否可以过滤嵌入htmlspecialchars()的视频
我允许用户在他们的页面上嵌入视频,但以防我想过滤输出。为了呈现视频,我从数据库中检索了嵌入语句,但当它被过滤时,它将以原始代码呈现。有没有一种视频友好的方式来过滤类似的内容,或者有没有人对另一种方式有什么建议?提前谢谢你的建议Php 是否可以过滤嵌入htmlspecialchars()的视频,php,html,video,embed,Php,Html,Video,Embed,我允许用户在他们的页面上嵌入视频,但以防我想过滤输出。为了呈现视频,我从数据库中检索了嵌入语句,但当它被过滤时,它将以原始代码呈现。有没有一种视频友好的方式来过滤类似的内容,或者有没有人对另一种方式有什么建议?提前谢谢你的建议 while ($row = $query->fetch(PDO::FETCH_ASSOC)) { $video= htmlspecialchars( $row['video'], ENT_NOQUOTES, 'UTF-8' ); } echo "$video";
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$video= htmlspecialchars( $row['video'], ENT_NOQUOTES, 'UTF-8' );
}
echo "$video";
例如,在数据库中,视频将如下所示
<object width="464" height="368" id="669545" type="application/x-shockwave-flash"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" alt="Aqua Teen Hunger Force - Hand Banana Funny
Videos"><param name="movie" value="http://embed.break.com/NjY5NTQ1"></param><param
name="allowScriptAccess" value="always"></param><embed src="http://embed.break.com/NjY5NTQ1"
type="application/x-shockwave-flash" allowScriptAccess=always width="464" height="368"></embed></
object><br><font size=1><a href="http://www.break.com/usercontent/2009/2/Aqua-Teen-Hunger-Force-Hand-
Banana-669545.html" target="_blank">Aqua Teen Hunger Force - Hand Banana</a> - Watch more <a href="http://
www.break.com" target="_blank">Funny Videos</a></font>
-观看更多
通常,在将用户输入插入HTML时,您应该htmlspecialchars()。但是在这种情况下,您已经有了HTML,所以您没有什么可以做的
您无法有效地筛选嵌入式插件。如果您允许用户指定任意Flash文件或其他插件,那么您已经有效地为他们提供了对您的安全上下文的免费跨站点脚本访问权限,再多的字符串清理也无法解决这一问题
如果您确实需要允许用户提交任意Flash或其他
/
代码,则需要在单独的安全上下文中托管该不受信任的代码。通常,您将主站点放在www.example.com
上,并将
添加到stuff.example.com
中,以吐出不受信任的
代码。然后,当插件代码试图做一些恶意的事情时,至少它只能影响stuff.example.com
,而不会影响www.example.com
上的任何真正的Web应用程序
或者,您只能允许用户发布来自您信任的提供商的视频内容,例如youtube.com
。然后你只需要让他们提交一个YouTube视频ID,然后自己构建
代码来指向该ID的URL。我喜欢第三种选择,但是如果他们将flash或javascript内容发布到文本区域,如果过滤输出,htmlspecialchars会阻止恶意代码被执行吗?过滤/防止跨站点脚本攻击还有其他方法吗?是的,如果他们在输入中键入
,而您在退出时将htmlspecialchars()
该值输入页面,他们将看到文本
,而不是实际的脚本标记。还有其他方法,比如HTML在输入数据进入数据库之前对其进行转义/过滤,遗憾的是,很多人都这样做。。。这些方法的技术术语是“破碎的”。只需确保在创建HTML输出时,在插入HTML之前,每一段纯文本(无论是来自用户输入、数据库还是其他地方)都是htmlspecialchars()
ed。(您可能需要创建一个名为h()的帮助函数)
这是回显htmlspecialchars
的功能,因此您不必键入
太多…)这是一个好主意,哈哈,我确实经常使用htmlspecialchars,感谢您的见解,非常感谢