2014-01-19 7 views
0

У меня есть вопрос относительно механизма синтаксического анализа шаблонов JSP.Использование JSP в качестве механизма анализа шаблонов - проблемы с безопасностью

Что я строю на данный момент является то, что позволяет клиентам создавать свои собственные шаблоны в JSP (внутри текстового поля на веб-странице), который затем может быть использован для электронной почты, целевые страницы и т.д.

Может JSP-теги/скриптлеты используются для доступа к данным, отличным от того, что доступно через $ {variables}, которые я установил в HttpRequest?

Другими словами, предоставление клиентам прямого доступа к движку шаблонов JSP представляет угрозу безопасности, и если да, могу ли я включить/выключить определенные теги JSP, представляющие угрозу безопасности?

ответ

1

JSPs тесно связанный к жизненному циклу запроса HTTP. JSP напрямую скомпилированы в классы Java, реализующие HttpServlet. С помощью скриптлетов вы введете довольно очевидную дыру в вашей системе (авторы JSP могут писать и выполнять произвольный код Java на вашем сервере).

TL; DR JSP - неплохой выбор для вашего прецедента. Используйте механизм шаблонов, который не основан исключительно на HTTP-запросах (String Template, Freemarker, ...).

+0

Если я отключу скриптлеты, будут ли другие потенциальные дыры в безопасности? Насколько я понимаю, если нет скриплетов, единственное, что осталось для доступа - это переменные, которые явно заданы в HttpRequest, если они явно не установлены, их нельзя использовать? –

+0

И как вы компилируете и называете JSP? AFAIK нет стандартного способа, как вручную компилировать JSP, и нет стандартного способа, как вызвать их без контекста запроса ... Они управляются и вызывается контейнером сервлета. По-моему, использование JSP для рендеринга электронной почты было бы уродливым взломом. –

+0

Я уже написал прототип, который может анализировать JSP, он в основном перехватывает вывод и записывает его в StringBuffer. http://stackoverflow.com/questions/456148/suggestions-for-java-email-templating/20847683#20847683 –

Смежные вопросы