Я хотел бы закодировать атрибут значения с помощью библиотеки ESAPI, используя специальный метод: ESAPI.encoder (). EncodeForHTMLAttribute (). Мой вопрос должен ли я использовать этот метод в самом JSF или в MessageBean? Если бы я должен был закодировать это в JSF, это правильный синтаксис?
<h3></f:verbatim><h:outputText id="frsubject" value="#{MessageBean.frSubject}" /><f:verbatim></h3>
<h3></f:verbatim><h:outputText id="frsubject" value=<%= ESAPI.encoder().encodeForHTMLAttribute("#{MessageBean.frSubject}") %> /><f:verbatim></h3>
Thansk @BalusC. Извините за поздний ответ, у меня также сложилось впечатление, что я буду в безопасности от xss-атак (используя JSF 1.2). Однако в отчете о фортификации приведено следующее объяснение:
Использование определенных конструкций кодирования, таких как тег с атрибутом escapeXml = "true" (поведение по умолчанию),
предотвратить некоторые, но не все межсайтовые скриптовые атаки. В зависимости от контекста, в котором появляются данные, символы за пределами
Basic <,>, &, и «которые закодированы в HTML, а те, которые находятся за пределами <,>, &,» и «, которые закодированы в XML, могут иметь метаменинг.
Использование таких конструкций кодирования эквивалентно использованию слабого черного списка для предотвращения межсайтовых сценариев и может
разрешить злоумышленнику внедрить вредоносный код, который будет выполняться в браузере. Потому что точное определение контекста в
Статические данные анализатора Fortify сообщают даже о результатах межсайтового скриптинга.
когда применяется кодирование и представляет их как межсайтовый скриптинг: проблемы плохой проверки.