Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> htmlspecialchars вывод текста из базы
file_xz  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 35404
На форуме: 4 года, 1 месяц, 22 дня
Карма: 1




Привет, хочу на свой форум добавить bb коды.


$_POST['text']='Здесь текст пользователя';

$bbcode=array('[b]' => '<b>','[i]' => '<i>','[u]' => '<u>','[s]' => '<s>');//Массив с кодами большой - я несколько значений сюда ввел, просто показать.


$text=htmlspecialchars($_POST['text'], null, "windows-1251");

foreach($bbcode as $v => $v2){
$text=str_replace($v, $v2, $text);
}

$text=mysql_real_escape_string($text);

mysql_query("INSERT `forum` SET `name`='{$_SESSION['name']}', `idus`='{$_SESSION['id']}', `words`='$text'");



Потом я могу просто из базы доставать сообщение и выводить всем пользователям? - не каких XSS уязвимостей не может быть?

Просто ранее у меня не было bb кодов на сайте, текст пользователя просто экранировался mysql_real_escape_string до добавления в таблицу, а уже потом выводился из таблицы (+ обрабатывался htmlspecialchars) и показывался пользователю.

Сейчас же я хочу до INSERT обработать текст пользователя htmlspecialchars , далее изменить в тексте bb коды на html теги и в дальнейшем просто выводить их пользователям сайта SELECT , без еще одной обработки htmlspecialchars.

Возможна ли какая-та уязвимость XSS? В массиве $bbcode только замена цвета и изменение текста (Жирный, Курсив и так далее).
BB коды для добавления ссылок, IMG и так далее нет, просто обычная замена текста str_replace - который присутствует в массиве.

Это сообщение отредактировал file_xz - 25.04.2016 - 06:37
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25989
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 9 дней


1) а почему не хочешь оригинал текста хранить в БД с бб тегами?
2)
Цитата
не каких XSS уязвимостей не может быть?


нет, у тебя же ограниченный набор данных для замены, остальное будет экранироваться real_escape_string

для картинок - не разрешай динамические урл, проверяй - что там картинка по данному адресу.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
file_xz  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 35404
На форуме: 4 года, 1 месяц, 22 дня
Карма: 1




Цитата (Игорь_Vasinsky @ 25.04.2016 - 05:54)
а почему не хочешь оригинал текста хранить в БД с бб тегами?

Меньше будет нагрузки на сервер (В массиве много bb кодов 200+) - лучше один раз их изменить и записать (а потом просто выводить), нежели постоянно когда пользователь просматривает страницу выводить данные из таблицы и заменять bb теги на html теги
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25989
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 9 дней


Цитата
Меньше будет нагрузки на сервер (В массиве много bb кодов 200+)


так ты перед сохранением эту нагрузку все равно создаёшь))

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

1 апреля - все цитаты перевернуть вверх тормашками )

ну это к примеру.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
file_xz  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 35404
На форуме: 4 года, 1 месяц, 22 дня
Карма: 1




Цитата (Игорь_Vasinsky @ 25.04.2016 - 10:59)
так ты перед сохранением эту нагрузку все равно создаёшь))

Так эта же нагрузка будет произведена 1 раз после чего запишется текст в бд и просто будет выводиться.
А если просто записывать оригинальный текст в бд, а уже потом изменять то нагрузка будет не один раз, а N сколько раз - сколько раз пользователи перейдут по ссылке столько и будет обработок для каждого сообщения... или я что то не так понял?

Это сообщение отредактировал file_xz - 25.04.2016 - 12:10
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 5 дней
Карма: 591




Цитата (file_xz @ 25.04.2016 - 06:35)
не каких XSS уязвимостей не может быть?

в таком виде - нет

вместо
Цитата (file_xz @ 25.04.2016 - 06:35)
foreach($bbcode as $v => $v2){
$text=str_replace($v, $v2, $text);
}

нужно просто
$text = strtr($text, $bbcode);
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2109
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 5 дней
Карма: 70




Игорь_Vasinsky
Цитата
а если будешь хранить оригинал - и вдруг решишь изменить правила

Тогда все сообщения, оформленные по старым правилам поломаются.


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
casper - gg  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Пользователь
Сообщений: 216
Пользователь №: 42190
На форуме: 1 год, 2 дня
Карма: 10




Цитата (file_xz @ 25.04.2016 - 12:10)
Так эта же нагрузка будет произведена 1 раз после чего запишется текст в бд и просто будет выводиться.
А если просто записывать оригинальный текст в бд, а уже потом изменять то нагрузка будет не один раз, а N сколько раз - сколько раз пользователи перейдут по ссылке столько и будет обработок для каждого сообщения... или я что то не так понял?


на сколько нагрузка уменьшится? если это простой bb декодер (а если он еще и на js), то выгоды нет.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 5 дней
Карма: 591




Цитата (casper - gg @ 25.04.2016 - 15:03)
если это простой bb декодер (а если он еще и на js), то выгоды нет.

на JS? А как же SEO?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 17 дней
Карма: 167




Цитата (file_xz )
то нагрузка будет не один раз, а N сколько раз - сколько раз пользователи перейдут по ссылке столько и будет обработок для каждого сообщения

самое время погуглить про кеширование

ну и в конце концов никто вам не запрещает хранить и чистый текст и текст с бб-кодами в бд одновременно


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
casper - gg  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Пользователь
Сообщений: 216
Пользователь №: 42190
На форуме: 1 год, 2 дня
Карма: 10




Цитата (killer8080 @ 25.04.2016 - 16:30)
на JS? А как же SEO?

может ему не надо сео. хотя вряд ли. Вариант автора звучит логично. Сначала очистить от тегов (если есть), затем псевдоразметку заменить тегами и записать в базу. потом просто читать. Правда при записи сообщения расходы повышаются. Вроде логично, что читают чаще чем пишут. Можно сделать временный кеш, скажем на несколько секунд, и ничего с ресурсами не случится. Ресурсы это все таки, своего рода расходный материал, и без затраченных ресурсов не обойтись. А с кешем при записи все останется по прежнему, при выдаче потребление ниже.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса