Регулярка запрет iframe

12
R
На сайте с 03.07.2006
Offline
214
2857

Здравствуйте,

Надо запретить постить iframe на сайте.

Сделал так


foreach ($_POST as $secvalue) {
if (preg_match("/<[^>]*iframe*\"?[^>]*>/i", $secvalue) {
exit('Код iframe запрещено использовать на сайте');
}
}

Помогите составить регулярку чтобы определять не загружает ли кто-нибудь валидный iframe, например видео с vkontakte

Что-то вроде


foreach ($_POST as $secvalue) {
if (preg_match("/<[^>]*iframe*\"?[^>]*>/i", $secvalue) and !preg_match("/<[^>]*iframe src=\"http://vk.com/video_ext.php*\"?[^>]*>/i", $secvalue)){
exit();
}
}

В регулярках плохо шарю, помогите с последним выражением. Спасибо.

---------- Добавлено 12.09.2012 в 00:50 ----------

Сам разобрался,

Вся функция будет выглядеть так:


foreach ($_POST as $secvalue) {
if ((preg_match("/<[^>]*iframe*\"?[^>]*>/i", $secvalue) and
!preg_match("/<[^>]*iframe( )src=\"http:\\/\\/vk.com\\/video_ext\\.php*\"?[^>]*>/i", $secvalue)){
exit('Iframe запрещён');
}
}
RiDDi
На сайте с 06.06.2010
Offline
256
#1

Угу, а код для обхода Вашей функции будет выглядеть так:


<iframe src="http://bebe.ru" iframe src="http://vk.com/video_ext.php"></iframe>
Вебмастер отдыхает на бережках морей. Заработок в интернете - дело техники.
R
На сайте с 03.07.2006
Offline
214
#2

RiDDi

Да, вы правы, как же добавить "<" в начале регулярки?

RiDDi
На сайте с 06.06.2010
Offline
256
#3

Добавлением < Вы не решите проблему. Надо проверять ВСЕ src во ВСЕХ фреймах

Чет проще этого ничего не приходит в голову


if(preg_match_all('|<iframe([^\>]+)>|Uis', $html, $a)>0) //берем внутренности всех iframe
{
foreach($a[1] AS $b)
{
if(preg_match_all('|src\=(?:[\"\'])?([^\'\"\s]+)(?:[\s\'\"])|Uis', $b, $c)>0) //берем все src
{
foreach($c[1] AS $d)
{
if(!preg_match('|^http://vk.com/video|', $d)) exit('error'); //проверяем содержат ли они в начале вконтактовскую ссылку
}
}
}
}
bums
На сайте с 03.07.2006
Offline
442
#4

strip_tags чем не устраивает?

Просто вырезать и все, незачем спамерам что то сообщать.

Недорогая регистрация и продление доменов RU/SU/РФ/COM/NET/ORG/и т.д. ( https://www.regnic.name/?sesign ) в РЕГРУ, РЕГТАЙМ, Р01, РУЦЕНТР. А так же хостинг и SSL сертификаты.
R
На сайте с 03.07.2006
Offline
214
#5

RiDDi, это может сработать, спасибо, буду ковырять.

bums, сервис располагает к тому, чтобы пользователи делились своими видео фалами.

Ayavryk
На сайте с 11.10.2003
Offline
209
#6

Какой смысл вырезать iframe и при этом не чистить все оcтальное script,object,onclick....?

Вы охотитесь за фреймом vk, а вам вставят скрипт который генерирует этот самый iframe или еще проще - фрейм, который будет менять содержимое через js с левого сайта на ту же порнушку но с другого сайта.

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
RiDDi
На сайте с 06.06.2010
Offline
256
#7
rengen:
RiDDi, это может сработать, спасибо, буду ковырять.

Незачто ) Однако это лишь пример решения Вашей задачи.

В целом же так лучше не делать )) Все тэги должны быть свои.

Надо ставить маркеры возле iframe.

Собирать src всех iframe.

Удалять все тэги вообще.

Заменять маркеры на собственные iframe заодно проверяя корректность src.

TF-Studio
На сайте с 17.08.2010
Offline
334
#8

Для видео - сделать отдельное поле.

Юзер дает ссылки, а вы сами генерируете код для него.

а контент - вырезать strip_tags

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
R
На сайте с 03.07.2006
Offline
214
#9
Ayavryk:
Какой смысл вырезать iframe и при этом не чистить все оcтальное script,object,onclick....?
Вы охотитесь за фреймом vk, а вам вставят скрипт который генерирует этот самый iframe или еще проще - фрейм, который будет менять содержимое через js с левого сайта на ту же порнушку но с другого сайта.

Понятное дело, я же не выложу тут весь код обработки POST и GET запросов. Выложил только нужный кусочек. Кроме того надо вести лог кто такие запросы делает, на случай если придётся банить по IP самых злых.

TF-Studio

Весь вводимый текст от пользователей обрабатывается через strip_tags, с перечнем допустимых тегов, но уже после обработки общим парсером. На сайте также используется текстовый редактор, и другие приблуды JS-AJAX. Общая обработка нужна чтобы не заморачиваться с каждым скриптом где нужна проверка (их более трёх десятков на сайте).

Форма для добавления комментария должна быть простой, без "дополнительных полей для видео", потому только так. Ссылку VK не даёт, чтобы встроить видео надо получить код с уникальным хешем.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#10

Я вообще не понял задачу.

Вам вырезать все iframe или оставлять какие-то?! Определитесь уже.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий