Альтернатива использованию c: out для предотвращения XSS

Я работаю над предотвращением межсайтового скриптинга (XSS) в веб-приложении на основе Java, Spring. Я уже реализовал фильтр сервлетов, подобный этому примеру http: //greatwebguy.com/programming/java/simple-cross-site-scripting-xss-servlet-filter/, который очищает весь ввод в приложение. В качестве дополнительной меры безопасности я хотел бы также очистить весь вывод приложения во всех JSP. Я провел небольшое исследование, чтобы увидеть, как это можно сделать, и нашел два дополнительных варианта.

Один из них - использование атрибута Spring defaultHtmlEscape . Это было очень легко реализовать (несколько строк в web.xml), и он отлично работает, когда ваш вывод проходит через один из тегов spring (например, теги сообщения или формы). Другой вариант, который я нашел, - не использовать напрямую выражения EL, такие как $ {...} , а вместо этого использовать

. Второй подход работает отлично, однако из-за размера приложения, над которым я работаю (более 200 файлов JSP). Заменить все неуместное использование выражений EL тегом c: out - очень обременительная задача. Кроме того, в будущем станет обременительной задачей убедиться, что все разработчики придерживаются этого соглашения об использовании тега c: out (не говоря уже о том, насколько нечитаемым будет код).

Есть ли альтернативный способ избежать вывода EL-выражений, которые потребовали бы меньшего количества изменений кода?

9
задан ROMANIA_engineer 22 August 2017 в 13:12
поделиться