Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #581 (permalink)  
Старый 09.09.2015, 14:37
Аспирант
Отправить личное сообщение для MakeMeFeel Посмотреть профиль Найти все сообщения от MakeMeFeel
 
Регистрация: 08.08.2015
Сообщений: 43

а как экранировать вывод html кроме <br>? например: есть текст и в нем \n переносы строк, если написать так:
{content|br}, то вместо <br> мы получим &lt;br&gt;

отэкранируются все символы, а нужно все, кроме <br>
Ответить с цитированием
  #582 (permalink)  
Старый 09.09.2015, 14:42
Аспирант
Отправить личное сообщение для MakeMeFeel Посмотреть профиль Найти все сообщения от MakeMeFeel
 
Регистрация: 08.08.2015
Сообщений: 43

если написать так:
{content|br|!html}
то получится натуральная XSS

Что нужно написать в фильтр, чтобы не получить дыру в сайте и переводить строку?

Последний раз редактировалось MakeMeFeel, 09.09.2015 в 14:44.
Ответить с цитированием
  #583 (permalink)  
Старый 09.09.2015, 15:22
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

MakeMeFeel,
- block tpl->outputWithBr(text)
  : paragraphs = text.split('\n')
  - forEach paragraphs -> p
    {p}
    < br
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #584 (permalink)  
Старый 09.09.2015, 15:25
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Ну и, соответственно, создаёшь темплейт tpl, где и юзаешь активно этот блок)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #585 (permalink)  
Старый 09.09.2015, 15:28
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

А правильно, конечно, вот так:

- block tpl->p(text)
  : paragraphs = text.split('\n')
  - forEach paragraphs -> p
    < p
      {p}
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #586 (permalink)  
Старый 09.09.2015, 16:16
Аспирант
Отправить личное сообщение для MakeMeFeel Посмотреть профиль Найти все сообщения от MakeMeFeel
 
Регистрация: 08.08.2015
Сообщений: 43

trikadin,
это весь текст нужно отпарсить, что это за жесть?

Сначала применяем фильтр на html, а затем грабли на перевод строки? Проще тогда дрюкать в браузере пользователя, чтобы сервер не упарывать.

Механизма встроенного, порядка фильтров например, нету? типа как в php nl2br?

, а и спасибо за пример.
Ответить с цитированием
  #587 (permalink)  
Старый 09.09.2015, 16:21
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

MakeMeFeel, эээм, в чём проблема? Где нужно отпарсить какой текст? Не понял тебя)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #588 (permalink)  
Старый 09.09.2015, 16:26
Аспирант
Отправить личное сообщение для MakeMeFeel Посмотреть профиль Найти все сообщения от MakeMeFeel
 
Регистрация: 08.08.2015
Сообщений: 43

Сообщение от trikadin
эээм, в чём проблема?
Наверное в том, что это какой-то дикий костыль.

вместо записи: {content|nl2br} ты предложил писать весь твой код в блоке.

Как минимум нужно запихать твой код в фильтр. Но мне интересно, есть ли встроенных nl2br? чтобы его не писать. Для меня странно, что его нет или я что-то упустил?

Я уж не говорю о том, что ты навязываешь мне использование тега p
Ответить с цитированием
  #589 (permalink)  
Старый 09.09.2015, 16:29
Аспирант
Отправить личное сообщение для MakeMeFeel Посмотреть профиль Найти все сообщения от MakeMeFeel
 
Регистрация: 08.08.2015
Сообщений: 43

Страннее всего, что нет html2br, экранировать всё, а переносы гнать в <br>
Ответить с цитированием
  #590 (permalink)  
Старый 09.09.2015, 16:31
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

MakeMeFeel, если тебе принципиально сделать это фильтрами, то легко:

{text |html |replace '\n', '<br>' |!html}


Но это плохой вариант.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
express-snakeskin - view через snakeskin для express melky Ваши сайты и скрипты 5 10.06.2014 11:35