Как добавить х-тип содержимого-варианты конфигурации сервера Tomcat
Мой клиент хочет, чтобы я исправил уязвимость моего веб-приложения
ниже приведено сообщение об уязвимости моего веб-приложения
Заголовку X-Content-Type-Options анти-MIME-Sniffing не было присвоено значение 'nosniff'
Эта проверка специфична для Internet Explorer 8 и Google Chrome. Убедитесь, что на каждой странице установлен заголовок > Content-Type и параметры X-CONTENT-TYPE, если заголовок Content-Type неизвестен
Хотя я уже нашел какое-то решение этой проблемы, я ищу для решения из конфигурации tomcat.
Можно ли внести изменения в конфигурацию tomcat для достижения этой цели?
Пожалуйста, дайте мне какую-нибудь идею.
4 ответов:
Я думаю, что вы можете достичь этого на уровне Tomcat следующими шагами:
- Создайте свой фильтр, упакуйте его в банку, поместите банку в
$CATALINA_BASE/lib/- добавить определение фильтра в
$CATALINA_BASE/conf/web.xml
Если вы используете Tomcat 8, это очень просто - добавьте эти два раздела в свой веб.xml:
<filter> <filter-name>HeaderSecurityFilter</filter-name> <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> </filter> <filter-mapping> <filter-name>HeaderSecurityFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>Ответ сервера теперь имеет 'nosniff' и X-Frame-Options: DENY по умолчанию
Подробнее: конфигурация фильтра Tomcat 8
Пример кода класса фильтра.
public class SampleResponseFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; // Protection against Type 1 Reflected XSS attacks res.addHeader("X-XSS-Protection", "1; mode=block"); // Disabling browsers to perform risky mime sniffing res.addHeader("X-Content-Type-Options", "nosniff"); chain.doFilter(req,res); } @Override public void init(FilterConfig filterConfig) throws ServletException { } }
Дополнить ответ Эда Норисса. Если я просто использую фильтр mappen, как это
<filter-mapping> <filter-name>HeaderSecurityFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>Чтобы настроить таргетинг на все, при загрузке медиаресурсов, таких как jpg, png и т.д., будут присутствовать некоторые ненужные заголовки (x-xss-protection и X-Frame-Options). (согласно https://sonarwhal.com линтинг-инструмент).
Чтобы избежать тезисов, я создал два фильтра и отображения, подобные этому:
<filter> <filter-name>httpHeaderSecurity</filter-name> <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> <async-supported>true</async-supported> </filter> <filter> <filter-name>httpHeaderSecurityNoX</filter-name> <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> <init-param> <param-name>antiClickJackingEnabled</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xssProtectionEnabled</param-name> <param-value>false</param-value> </init-param> <async-supported>true</async-supported> </filter>...
<filter-mapping> <filter-name>httpHeaderSecurity</filter-name> <url-pattern>*.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <filter-mapping> <filter-name>httpHeaderSecurityNoX</filter-name> <url-pattern>*.jpg</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <filter-mapping> <filter-name>httpHeaderSecurityNoX</filter-name> <url-pattern>*.png</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping>И еще несколько отображений фильтров. httpHeaderSecurityNoX для каждого из этих расширений: png, gif, js, css, ico (может быть, это может содержаться в одном url-шаблоне?)
Инит-парам
xssProtectionEnabledНе был указан в Tomcat web.комментарии xml, но нашел его здесь
Https://vk4u.wordpress.com/2017/03/02/how-to-enable-security-filters-in-tomcat/

Comments