мы поддерживаем Apache Tomcat для клиента, который подключен к обычным веб-серверам Apache с использованием AJP-моста. В какой-то момент в прошлом клиент запрашивал, что заголовок ответа типа контента всегда содержит "charset = utf-8", который был реализован следующей конфигурацией в Tomcat:
<jsp-config>
<jsp-property-group>
<url-pattern>*.html</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
Совсем недавно мы поняли, что это приводит к выполнению HTML файлов, как если бы они были JSP файлами, которые мы хотим избежать, и вместо этого настраиваем заголовок ответа, используя <mime-mapping>
. К сожалению, указанная выше конфигурация уже более года работает на производственных серверах, и клиент спросил, почему мы хотим изменить конфигурацию.
Наши первоначальные предложения по соблюдению принципа наименьших привилегий, потенциально более высокие сроки доставки и возросшие шансы на межсайтовый скриптинг приводят только к дополнительным вопросам для деталей. Из-за отсутствия опыта в этих вопросах я надеюсь получить здесь несколько отзывов.
С наилучшими пожеланиями и благодарностью.
Интерпретация HTML как файлов JSP означает, что:
<%... %>
будет интерпретироваться как код Java<%@%>
будет интерпретироваться как директивы JSP<taglib:tag/>
будет интерпретироваться как теги JSP${}
будет интерпретироваться как EL-выраженияНаписание их в HTML может привести к исключению или непреднамеренному выполнению кода. Теперь это зависит от того, кто может редактировать HTML файлы. Если они редактируются через CMS, это довольно серьезная проблема безопасности.
Если вы хотите принудительно кодировать, это делается с помощью фильтра сервлетов (см. CharacterEncodingFilter
), клапана Tomcat (ничего не используется в пакете по умолчанию) или с помощью mod_headers
или AddDefaultCharset
на вашем HTTP-сервере Apache.
Почти любое решение было бы лучше, чище, проще и безопаснее, чем то, что вы сделали :).