Как мне разрешить безопасно вставлять видео html на сайт? - PullRequest
3 голосов
/ 23 сентября 2010

У меня есть php-приложение, в котором мы разрешаем каждому пользователю иметь «публичную страницу», на которой показано их связанное видео. У нас есть текстовое поле ввода, где они могут указать HTML-код для встраивания видео. Проблема, с которой мы сталкиваемся, заключается в том, что если мы возьмем этот ввод и напрямую отобразим его на странице , как он есть , то здесь можно вставить все виды сценариев, что приведет к очень небезопасной системе.

Мы хотим разрешить встраивание кода со всех сайтов, но, поскольку они отличаются по своей структуре, становится трудно следить за тем, как каждый из них структурирован.

Какие подходы люди использовали для решения этого сценария? Есть ли сторонние скрипты, которые делают это для вас?

Ответы [ 3 ]

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

Подумайте об использовании какого-нибудь псевдо-шаблона, который использует oEmbed .oEmbed - это безопасный способ ссылки на видео (как администратор контента, вы не разрешаете прямое встраивание, а скорее ссылки на встраиваемый контент).

Например, вы можете написатьсинтаксический анализатор, который ищет что-то вроде:

[embed]http://oembed.link/goes/here[/embed]

Затем вы можете использовать одну из множества библиотек PHP oEmbed для запроса ресурса по предоставленной ссылке и замены псевдо-встраиваемого кода реальным встраиваемым кодом.

Надеюсь, это поможет.

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

Я бы попросил пользователей ввести URL-адрес видео. Оттуда вы можете вставить правильный код самостоятельно. Им легче и безопаснее.

Если вы столкнулись с неизвестным URL, просто войдите в него и добавьте код, необходимый для его поддержки.

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

Наилучшим подходом было бы иметь разрешенный белый список и удалить все остальное.Также было бы необходимо отфильтровать все атрибуты этого тега, чтобы удалить атрибут «onsomething».

Для правильного анализа необходимо использовать синтаксический анализатор XML.XMLReader и XMLWriter прекрасно с этим справятся.Вы читаете данные из XMLReader, если тег находится в белом списке, вы записываете его в XMLWriter.В конце процесса у вас есть проанализированные данные в XMLWritter.

Примером кода будет этот скрипт .В белом списке есть теги test и video.Если вы дадите ему следующий ввод:

<z><test attr="test"></test><img />random text<video onclick="evilJavascript"><test></test></video></z>

Он выведет это:

<div><test attr="test"></test>random text<video><test></test></video></div>
...