Я пытаюсь передать сообщение шаблону Mustache, который выглядит примерно так:
Указанный вами URL http://example.com
недействителен.
Пользователь указывает URL-адрес, поэтому URL-адрес необходимо экранировать. Однако я хочу поместить теги <code>
вокруг URL-адреса, чтобы он выделялся из окружающего текста, поэтому теги кода необходимо передавать без экранирования.
Я мог бы написать что-то вроде этого:
{{text_before_url}}<code>{{url}}</code>{{text_after_url}}
Однако текст сообщения различается и не всегда соответствует этой структуре.
Я также мог бы попробовать вывести необработанный текст с тремя фигурными скобками, {{{messages}}}
, и экранировать URL-адрес чем-то вроде htmlentities($url)
, но если кто-то позже адаптирует программу для передачи нового сообщения и передает данные, не понимая, что их нужно экранировать, тогда у нас большие проблемы с XSS.
Возможно, мне просто не повезло, и я понимаю ценность простого механизма шаблонов, но есть ли способ сообщить Усику, что с HTML-тегами все в порядке, при этом экранируя остальную часть вывода?
Кевин