2017-01-20 17 views
1

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

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

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

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

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

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

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

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

Вышеупомянутая статья: JSF 2.0; escape="false" alternative to prevent XSS?

+0

Какое сообщение об ошибке? –

+0

Ошибка браузера не является полезным: Не удалось открыть HTTP: // локальный: 8080/someFile.jsf Я был в состоянии получить это из консоли в режиме отладки: Вызванный: javax.el.ELException: Функция " fn: escapeXml 'не найден – MrZii

ответ

0

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

Я добавил его, и он, кажется, работает в настоящее время !