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

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

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Парсер бб кодов

Сообщения:  [1-10]   [11-18] 

 
 автор: Loki   (18.01.2008 в 16:34)   письмо автору
 
   для: fiper   (18.01.2008 в 16:07)
 

Неправильно по двум причинам... ну скажем по полутора:)

[ code]
   первый блок
[ /code]
[ code]
   второй блок
   [ url]xss[ /url]
   <a href=xss>воть</a>
[ /code]

в этом случае у вас будут захвачены только крайние теги. надо использовать не (*.), а (.*?)

ну и вторая причина, что xss во втором блоке все равно сработает (в том случае, если теги url будут парсится после code). Ну и заменить только кавычки - недостаточно.

   
 
 автор: fiper   (18.01.2008 в 16:07)   письмо автору
 
   для: Loki   (18.01.2008 в 15:32)
 

Почему неправильно. Объясните пожалуйста? Я имею ввиду в целях безопасности, код внутри [code] будет заменять html теги и xss не пройдёт

   
 
 автор: Loki   (18.01.2008 в 15:32)   письмо автору
 
   для: fiper   (18.01.2008 в 14:44)
 

Нет. Неправильно.
Правда, я не очень понял мы о ссылках говорим или уже нет?

   
 
 автор: fiper   (18.01.2008 в 14:44)   письмо автору
 
   для: Loki   (17.01.2008 в 16:02)
 

А если вот так?Правильно?

$text=preg_replace("#\[code\](.*)\[\/code\]#i",htmlspecialchars("\\1",ENT_QUOTES),$text);


или так

$text=preg_replace("#\[code\](.*)\[\/code\]#si","htmlspecialchars('$1',ENT_QUOTES)",$text);

   
 
 автор: Loki   (17.01.2008 в 16:35)   письмо автору
 
   для: afdm   (17.01.2008 в 16:10)
 

ну например так:
<?
$text
=preg_replace('#(\[url\].*?)script:(.*?\[/url\])#si''$1 script:$2'$text);

   
 
 автор: afdm   (17.01.2008 в 16:10)   письмо автору
 
   для: Loki   (17.01.2008 в 15:26)
 

может кто-нить покажет на примере? :))) а то я не особо силен в рег. выражениях :)))
если можно...

   
 
 автор: Loki   (17.01.2008 в 16:02)   письмо автору
 
   для: kasmanaft   (17.01.2008 в 15:58)
 

>Думаю, Вы не много потеряете пользователей, если запретите им вводить относительные ссылки :)
Меня потеряете:)
Вас, например, не раздражает, когда зайдя на форум softtime.ru и кликнув по какой-нибудь ссылке, вы оказываетесь на www.sofftime.ru и хлоп - вместо "Привет, kasmanaft!" наверху "Привет, пользователь!"?
Меня вот чрезвычайно раздражает. Поэтому стараюсь ставить относительные ссылки где это возможно.

   
 
 автор: kasmanaft   (17.01.2008 в 15:58)   письмо автору
 
   для: Loki   (17.01.2008 в 15:48)
 

Думаю, Вы не много потеряете пользователей, если запретите им вводить относительные ссылки :)

>> в том числе и начинаться с javascript
Может быть еще код распарсить да проанализировать - опасный он или нет :))

   
 
 автор: Loki   (17.01.2008 в 15:48)   письмо автору
 
   для: kasmanaft   (17.01.2008 в 15:33)
 

ссылки могут быть и относительными. в том числе и начинаться с javascript. Это случай совсем фантастический, но теоретически возможный:)

   
 
 автор: kasmanaft   (17.01.2008 в 15:33)   письмо автору
 
   для: afdm   (17.01.2008 в 14:33)
 

Заменять не всё подряд, а только то, что начинается с "http://" (ftp, https, итдитп)

   

Сообщения:  [1-10]   [11-18] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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