Проблема параметров запроса экранирования кокона
Я поддерживаю приложение Cocoon 2.1 и столкнулся с серьезной проблемой с параметрами запроса.
Рассмотрим следующий URL:
http://myapp.com/somePage.html?param1=<expected_integer_value>¶m2=<expected_integer_value>
И param1, и param2 напрямую передаются в преобразователь в качестве параметров (<map:parameter />
), а затем непосредственно используется в коде JavaScript с использованием шаблона значения атрибута:
`<select ... onchange="someFunction(this, '{$param1}','{$param2}');" >`
Проблема в том, что в параметры можно ввести некоторый код JavaScript, и они не экранированы по умолчанию (тем не менее, во всех статьях о cocoon и xslt говорится, что по умолчанию экранирование выводится).
Возможно, кто-то более опытный с cocoon и xsl может знать что-то об этой проблеме? Как я могу избежать выхода в коконе? Я буду признателен за любую помощь и руководство.
заранее спасибо
Саймон
2 ответа
Мне удалось найти решение этой проблемы. В файле sitemap каждый параметр, который должен быть передан непосредственно из файла url в файл xslt, должен быть экранирован с помощью url-encode
функция. пример
<map:parameter name="param1" value="{url-encode:{request-param:theNameOfTheParam}}" />'
С уважением Саймон
Так как кокон декодирует коляски, я предлагаю вам сделать простой перевод, чтобы избежать проблемы с неэкранированным параметром:
<select ... onchange="someFunction(this, '{translate($param1,"'", "")}','{translate($param1,"'", "")}');" >
см. http://www.zvon.org/xxl/XSLTreference/Output/function_translate.html