Предотвращение отражения XSS в JSF ‹f:param›

Я поддерживаю устаревшее приложение, использующее JSF (и JSP). Я делаю все возможное, чтобы предотвратить XSS, добавляя валидаторы и escape-последовательности в код по мере необходимости. Я новичок в JSF.

Пример кода (в xhtml):

<h:form id="someForm">
<f:param name="someProperty" value="#{someBean.someProperty}"/>
</h:form>

Моя проблема Наш сканер безопасности говорит, что это уязвимо для отражения XSS. Я хотел бы добавить побег к значению свойства.

Мое исследование: я читал, что JSF обычно автоматически экранирует все в . У него есть параметр, который вы должны установить на fales, чтобы отключить это. Однако, кажется, не имеет этой функции. Я нашел предложенный фрагмент кода, который может работать:

<f:param name="someProperty" value="#{fn:escapeXml(someBean.someProperty)}"/>

Однако когда я использую fn:escapeXml, страница не загружается. Как это обычно решается?

Обратите внимание, что это важное устаревшее приложение. Желательны действия с наименьшим уклонением.

Вышеупомянутая статья: JSF 2.0; escape=false альтернатива для предотвращения XSS?


person MrZii    schedule 20.01.2017    source источник
comment
какое сообщение об ошибке?   -  person Maciej Kowalski    schedule 20.01.2017
comment
Ошибка браузера бесполезна: не удалось открыть localhost:8080/someFile.jsf Я смог получить это из консоли в режиме отладки: вызвано: javax.el.ELException: функция «fn:escapeXml» не найдена   -  person MrZii    schedule 20.01.2017


Ответы (1)


Ну, это неудобно. Оказывается, в одном из моих файлов xhtml отсутствовал необходимый импорт: xmlns:fn="http://java.sun.com/jsp/jstl/functions"

Я добавил его, и теперь он работает!

person MrZii    schedule 20.01.2017