Нет простого, готового решения для XSS со стойками 2 метки. OWASP ESAPI API имеет некоторую поддержку экранирования, которая очень полезна, и у них есть библиотеки тегов.
Мой подход состоял в том, чтобы в основном расширить теги stuts 2 следующими способами.
- Измените тег s: property, чтобы он мог принимать дополнительные атрибуты, указывающие, какой тип экранирования требуется (escapeHtmlAttribute = "true" и т. Д.). Это включает в себя создание новых классов Property и PropertyTag. Класс Property использует OWASP ESAPI api для экранирования.
- Измените шаблоны свободных маркеров для использования новой версии свойства s: и установите экранирование.
Если вы не хотите изменять классы на шаге 1, другой подход заключается в импорте тегов ESAPI в шаблоны freemarker и при необходимости экранировании. Затем, если вам нужно использовать тег s: property в вашем JSP, оберните его тегом ESAPI.
Я написал более подробное объяснение здесь.
http://www.nutshellsoftware.org/software/securing-struts-2-using-esapi-part-1-securing-outputs/
Я согласен, что экранирование не является идеальным.