Можно ли отфильтровать видео с помощью htmlspecialchars () - PullRequest
0 голосов
/ 23 сентября 2010

Я разрешаю пользователям вставлять видео на свою страницу, но на всякий случай я хочу отфильтровать вывод.Чтобы представить видео, я извлекаю оператор вставки из базы данных, но когда он фильтруется, он представляется в необработанном коде.Есть ли удобный для видео способ фильтрации чего-то подобного или у кого-нибудь есть предложения по другому способу сделать это?Заранее спасибо за любой совет.

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>

1 Ответ

1 голос
/ 23 сентября 2010

Как правило, вы должны htmlspecialchars() вводить данные пользователя в тот момент, когда вы вставляете их в HTML.Но в этом случае у вас уже есть HTML, поэтому вы ничего не можете сделать.

Вы не можете с пользой фильтровать встроенные плагины.Если вы разрешаете пользователям указывать произвольный файл Flash или другой плагин, вы уже фактически предоставили им бесплатный доступ к межсайтовому скриптингу в контексте безопасности, и никакая очистка строк не исправит это.

Есливам действительно нужно разрешить пользователям отправлять произвольный Flash или другой код <object> / <embed>, вам нужно будет разместить этот ненадежный код в отдельном контексте безопасности.Как правило, вы ставите основной сайт на www.example.com и включаете от <iframe> до stuff.example.com, который выплевывает ненадежный код <object>.Затем, когда код плагина пытается сделать что-то враждебное, по крайней мере, это может повлиять только на stuff.example.com, а не на любое ваше реальное веб-приложение на www.example.com.

В качестве альтернативы, вы можете разрешить пользователям размещать видео-контент только споставщики, которым вы доверяете, например.youtube.com.Затем вы просто позволяете им отправить идентификатор видео YouTube и самостоятельно создать код <object>, чтобы указать URL-адрес для этого идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...