Можно ли настроить Tomcat 7 для вставки HTTP-заголовка Content-Security-Policy: frame-ancestors 'self'
с каждым ответом, например, он может вставлять другие заголовки, связанные с безопасностью, например X-Frame-Options
?
Можно ли настроить Tomcat 7 для вставки HTTP-заголовка Content-Security-Policy?
Ответы (1)
Когда это невозможно сделать с помощью встроенных фильтров Tomcat 7.x , вы можете попробовать один из следующих вариантов:
Создание фильтра в вашем приложении
Если добавление фильтра к вашему приложению является опцией, вы можете использовать следующий код, чтобы добавить заголовок к каждому ответу:
@WebFilter("/*")
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Content-Security-Policy", "frame-ancestors 'self'");
chain.doFilter(request, response);
}
}
Создание пользовательского клапана в вашем Tomcat
Еще один вариант — индивидуальный клапан. Цитируя шаги с этой страницы:
Создайте Java-приложение Maven.
Добавьте следующую зависимость:
<dependency> <groupid>org.apache.tomcat</groupId> <artifactid>tomcat-catalina</artifactId> <version>7.0.34</version> <scope>provided</scope> </dependency>
Create your Java class and extend it from
ValveBase
.Реализовать
invoke(Request, Response)
.Создайте файл библиотеки (
.jar
)Установите библиотеку в каталог
${tomcat.home}/lib
.Настройте
server.xml
для использования вашего нового клапана. Например:<valve className="com.example.MyValve"/>
- Запустите сервер, чтобы увидеть ваш новый клапан в действии.
Your valve implementation could be like:
public class MyValve extends ValveBase {
@Override
public void invoke(Request request, Response response) throws IOException,
ServletException {
HttpServletResponse httpResponse = response.getResponse();
httpResponse.setHeader("Content-Security-Policy", "frame-ancestors 'self'");
getNext().invoke(request, response);
}
}
person
cassiomolin
schedule
18.05.2016
Спасибо за ответ. Я должен был упомянуть без изменения кода.
- person Peter Klimczak; 18.05.2016
@PeterKlimczak Я думаю, что специальный клапан может помочь. Я обновлю свой ответ.
- person cassiomolin; 18.05.2016