Проблема параметров запроса экранирования кокона

Я поддерживаю приложение Cocoon 2.1 и столкнулся с серьезной проблемой с параметрами запроса.

Рассмотрим следующий URL:

http://myapp.com/somePage.html?param1=<expected_integer_value>&param2=<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

Другие вопросы по тегам