Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка тэгов [img][/img]
 
 автор: Figaroo   (28.03.2007 в 10:59)   письмо автору
 
 

Здравствуйте!
Пишу свой форум на PHP, пользуюсь вашей книжкой "PHP 5. Практика создания WEB-сайтов."

Вы рассказываете, как обработать тэги [*b][*/b], [*i][/*i], [*code][/*code].
С этими всё более-менее ясно, но хотелось бы знать, как обработать тэг [img][/img]?
Мне кажется, что лучше всего это сделать с помощью preg_replace().

Вот пример того, что люди будут вставлять на форум:
[img]http://site.ru/image1.jpg[/img]
[img]http://site.ru/image2.gif[/img]
[img]http://site.ru/image3.png[/img]
[img]http://www.site.ru/image1.jpg[/img]
[img]http://www.site.ru/image2.gif[/img]
[img]http://www.site.ru/image3.png[/img]
[img]www.site.ru/image1.jpg[/img]
[img]www.site.ru/image2.gif[/img]
[img]www.site.ru/image3.png[/img]

Формат изображений - gif, jpg, png.

То есть, нужно регулярное выражение, заменяющее в строке $text все подстроки вида "[img]$subtext[/img]" на "<img src='$subtext'>", при этом $subtext должен соответствовать вышеприведённому формату (по примеру того, что люди будут вставлять на форум) - это необходимо для защиты от XSS.

Прошу помочь. Заранее спасибо.

   
 
 автор: Loki   (28.03.2007 в 12:09)   письмо автору
 
   для: Figaroo   (28.03.2007 в 10:59)
 

<?
$text
=preg_replace('/\[img\](.*?)\[\/img\]/is''<img src="$1">'$text);

Правда, я не понял почему именно эта конструкция защитит от xss.

   
 
 автор: Figaroo   (28.03.2007 в 14:23)   письмо автору
 
   для: Loki   (28.03.2007 в 12:09)
 

Строка между тэгами также должна:
- начинаться с http:// или http://www или www
- заканчиваться на .jpg или .gif или .png
- после своего начала (см. выше) и до конца содержать только цифры, английские буквы, знак нижнего подчёркивания, дефис, прямой слэш (/), точку

   
 
 автор: Figaroo   (28.03.2007 в 14:50)   письмо автору
 
   для: Figaroo   (28.03.2007 в 14:23)
 

вроде как я понял...

вот:

$text = preg_replace('/\[img\](http:\/\/[a-zA-Z_0-9\-\.\/]*\.(jpg|gif|png))\[\/img\]/is', '<img src="$1">', $text);

   
 
 автор: Loki   (28.03.2007 в 15:57)   письмо автору
 
   для: Figaroo   (28.03.2007 в 14:23)
 

путь может быть не только http, но и https... а может и вообще быть относительным

>- после своего начала (см. выше) и до конца содержать только цифры, английские буквы, знак нижнего подчёркивания, дефис, прямой слэш (/), точку

а знаки "=", "?", "&", ","?

   
 
 автор: Trianon   (28.03.2007 в 17:13)   письмо автору
 
   для: Loki   (28.03.2007 в 15:57)
 

#

   
 
 автор: Loki   (28.03.2007 в 17:19)   письмо автору
 
   для: Trianon   (28.03.2007 в 17:13)
 

специально его не стал включать... но, в общем, верно

   
 
 автор: Figaroo   (28.03.2007 в 22:33)   письмо автору
 
   для: Loki   (28.03.2007 в 17:19)
 

Ребят, у вас понятия о безопасности существуют какие-нибудь?
Если вы хотите, чтобы пользователи могли вставлять простые картинки в форум, то зачем им спецсимволы?

Если разрешить вопрос, амперсанду и равно - то это ничего не даст простым пользователям, а хакеры смогут использовать для XSS.

Если разрешить относительные пути - тоже XSS'ом пахнет...

А то, найдутся умники, которые вместо картинок вам скриптов нагрузят...


Всем спасибо за внимание.

   
 
 автор: Trianon   (28.03.2007 в 22:41)   письмо автору
 
   для: Figaroo   (28.03.2007 в 22:33)
 

схема javascript: - заблокирована. Левый уголок - заблокирован. Выход за пределы кавычки - и тот заблокирован. Какие XSS из-за амперсенда и равно? Пример в студию!


Опять охота на ведьм... опять символы делят на добрые и злые....

   
 
 автор: Figaroo   (28.03.2007 в 22:54)   письмо автору
 
   для: Trianon   (28.03.2007 в 22:41)
 

Если в ссылке на изображение присутствуют равно, амперсанда, вопрос и пр. - это 99% не изображение, а скрипт...

   
 
 автор: Trianon   (29.03.2007 в 00:09)   письмо автору
 
   для: Figaroo   (28.03.2007 в 22:54)
 

скрипт изображение чтоли не может возвращать?!

[поправлено модератором]

   
 
 автор: Loki   (29.03.2007 в 14:59)   письмо автору
 
   для: Figaroo   (28.03.2007 в 22:54)
 

вы о динамической генерации изображений когда-нибудь слышали? они в 100% случаев генерируются скриптами.
Вообще, на вашем месте, я бы просто пользователю ткнул под нос мануал, пунктов на 20, как ему вводить ссылки... зачем думать разработчику? Пусть у юзеров голова болит...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования