iDokuro
@iDokuro
Тугодум

VOLТ, Phalcon, XSS как исправить?

Пример всем.

В общем я не знаю какой тут костыль придумать. Проблема:

Я вывожу пост. Но пост перед выводом я прогоняю через XSS фильтр встроенного в VOLT:

{{ post.message|e }}

Но суть в том, что post.message имеет MarkDown разметку. Которую нужно преобразовать в валидный HTML.

Первый вариант что я делаю:

{{ mark.Down(post.message) }}

Но так можно пропихнуть XSS.

Я решил перед передачей post.message в функцию markDown::parse() прогонять через фильтр XSS:

{% set post.message = post.message|e %}

<div class="post-text">
    {{ markDown.parse(post.message) }}
</div>


Но так почему-то портится MarkDown разметка. (На выводе выходит обработаная MarkDown'ом строка, но HTML теги разметки тоже эскейпятся фильтром)

Почему так? По логике же не должно такого быть.

Скомпилированный шаблон выглядит так:

<?php $post->message = $this->escaper->escapeHtml($post->message); ?>

<div class="post-text">
    <?php echo $this->markDown->parse($post->message); ?></p>
</div>


У меня уже голова кругом. что тут не так?
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
copist
@copist
Empower people to give
Как инициируется markDown ? Что это?

А так работает?

{% set post_message = post.message|e %} {# не портить внутренности объекта post #}

<div class="post-text">
    {{ markDown.parse(post_message ) }}
</div>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы