Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > bbcode XSS


Автор: neoks 20.9.2012, 14:36
Собственно делаю сейчас новый bbcode и мне сказали что preg_match или preg_replace это верный путь к XSS и что нуно другое использовать сказав лишь что смотри как устроено в других bbcodes  smile  а что смотреть если у них также все реализовано, вообщем ответ я не получил.

Так вот мне интересует каким же еще способом можно это сделать ? облазил весь гугл и не знаю как же этот способ называется хоть ? )) буду очень признателен если хоть подскажите в какую сторону хотя бы рыть )

И еще вопрос, фильтрую данные SQL запроса в бд и говорят что mysql_real_escape_string не поможет защитится от SQL injection, так ли это ?
Конечно правильно запрос составить это одно, банальный типа этого это другое

Код

$id = '0 OR status=1' 

SELECT * FROM table WHERE id=$id;
  

такой запрос конечно банальный и  разумеется не защитит  smile 

А вот например вот такой ?

Код

$pass = mysql_real_escape_string('SQL injection');
SELECT * FROM table WHERE pass="$pass";


В доке почитал что там знак % не экранируется, что это значит и что за этим может повлечь ? smile

Автор: Sanchezzz 20.9.2012, 17:42
mysql_real_escape_string нормальный инструмент и правильно работает в отличии от addslashes который не понимает мултибайтовых символов 
А процент то вам что сделал ? это нормальный символ которые если размещать в  кавычках вам нечего не скажет и не навредит
Код

$SQL ="  '"  .mysql_real_escape_string   ('опаснно текст') .   "'"


preg_match или preg_replace а это как к инекции относится?
Для проверки и манипуляции с текстом это нормальный инструмент + на финальный шаг mysql_real_escape_string

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


Автор: neoks 20.9.2012, 17:57
Цитата(Sanchezzz @  20.9.2012,  17:42 Найти цитируемый пост)
preg_match или preg_replace а это как к инекции относится?


Это я писал про bbcode мов в редакторе мона какуета каку написать и получить XSS, как я понял если там используется оператор e то если пошаманить и без должной проверки мона получить XSS, но мне сказали что мов это все устарело и смотри современные bbcode-ы типа wysiwyg  smile
Пока еше не смотрел и буду выяснять что же там такого особенного что они не используют preg_match и preg_replace ))

Автор: GZep 20.9.2012, 18:17
neoks, используйте либо готовый велосипед, либо связку mysql_real_escape_string - для mysql и htmlspecialchars - для html.
Советую все-таки взять готовый велосипед хотя бы за основу.

Автор: ksnk 20.9.2012, 18:56
Цитата(neoks @  20.9.2012,  17:57 Найти цитируемый пост)
смотри современные bbcode-ы типа wysiwyg  

Угу. Катайся на современом велосипеде типа джЫп  smile 

Хотя визивиг не так уж и сложен, и не так уж и страшен для сайта. Нужно только научится корректно фильтровать всю муть, которую народ захочет обязательно понавставлять из ворда и с других сайтов - выкидывать лишние стили, пристреливать скрипты и конвертировать полезные стили в "употребительные на сайте". Разумнее всего первоначальный фильтр написать на javascript, чтобы грузить не сервер а "резиновый" клиентский компьютер.

Насчет приличных bbcode-велосипедов можно посмотреть в сторону открытых cms. Те плагины, которые включены в стандартную сборку и будут "приличными".

Автор: neoks 20.9.2012, 19:36
Цитата(GZep @  20.9.2012,  18:17 Найти цитируемый пост)
Советую все-таки взять готовый велосипед хотя бы за основу. 


Увы велосипедов которых мне нужно таких нету ) 

Цитата(ksnk @  20.9.2012,  18:56 Найти цитируемый пост)
Хотя визивиг не так уж и сложен, и не так уж и страшен для сайта. Нужно только научится корректно фильтровать всю муть, которую народ захочет обязательно понавставлять из ворда и с других сайтов - выкидывать лишние стили, пристреливать скрипты и конвертировать полезные стили в "употребительные на сайте". Разумнее всего первоначальный фильтр написать на javascript, чтобы грузить не сервер а "резиновый" клиентский компьютер.


Выяснил что они полностью на JS работают и без фильтра особенно когда пользователи просматривают страницу или еше хуже админ то мона схлопотать XSS, прочитал немного статей и негде не упоминалось что нужно фильтровать данные ))

Вообшем wysiwyg мне не подходит, какой-та не удобный редактор как по мне, чуть что запарол и сидиш нервы трипаеш пытаешся вставить картинку туда куда нужно ))

Главное я выяснил все нюансы и буду свой bbcode писать, Спасибо всем кто откликнулся smile


Автор: GZep 9.10.2012, 17:00
neoks, если еще делаете, то вот, может поможет: http://bbcparser.recgr.com/index.php

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)