настройка Content-Security-Policy в tomcat

Я читал о настройке/реализации заголовка Content-Security-Policy и нашел 2 способа сделать это:

  1. используя пользовательский фильтр, который реализует фильтр, как указано в эта ссылка
  2. используя метатег

Обратите внимание, что этот вопрос не дублирует это, я ищу решение лучше, чем указано в эта ссылка

Я вижу недостатки в (1) в том, что он управляется кодом, а не файлом конфигурации, недостатками в варианте (2) является то, что если у меня есть, скажем, 100 html-файлов, мне нужно поместить этот тег в каждый HTML? (поправьте меня, если я ошибаюсь) Решение, которое я ищу, - это то, что я могу настроить в web.xml, и оно становится применимым для всех файлов html. Что-то подобное мы делаем в случае настройки X-Frame-Options в web.xml, как указано здесь, разве у нас нет аналогичного способа настройки Content-Security-Policy в web.xml?


person vsp    schedule 31.08.2016    source источник
comment
Возможный дубликат Можно ли настроить Tomcat 7 вставить HTTP-заголовок Content-Security-Policy?   -  person Stefan    schedule 31.08.2016
comment
Это не дубликат, вариант (1), который я указал, взят из темы, которой вы поделились выше. Пожалуйста, прочитайте недостатки, которые я объяснил выше, я ищу решение, в котором мы можем настроить его с помощью web.xml или любой другой файл конфигурации tomcat   -  person vsp    schedule 31.08.2016


Ответы (2)


Настройте политику безопасности контента в web.xml

Вы можете воспользоваться рекомендацией, предоставленной OWASP здесь. Это веб-фильтр, который вы можете реализовать в своем бэкэнде.

Приведенный ниже фильтр должен быть затем определен в вашем файле web.xml. Это вызывается при каждом запросе в вашем приложении. В java вы можете сделать это, создав соответствующий класс.

    <filter>
        <filter-name>ContentSecurityPolicy</filter-name>
        <filter-class>YourPackagePath.ContentSecurityPolicyFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>ContentSecurityPolicy</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

Приведенное выше будет реализовывать приведенные ниже значения для политики безопасности контента в вашем заголовке HTTP.

источник по умолчанию 'нет'; style-src 'self' 'небезопасный встроенный'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'я'; кадр-источник «я»; подключить-источник 'я'; форма-действие «я»; Блок отражения-xss

person RICHARD ABRAHAM    schedule 31.05.2019
comment
Обновлена ​​ссылка на более новую, предоставляющую JAVA-реализацию CSP. - person RICHARD ABRAHAM; 05.06.2020
comment
Ссылка не работает, попробуйте owasp.org/www-community/controls/Content_Security_Policy - person Kamal; 20.04.2021

Вы пытались использовать https://github.com/sourceclear/headlines (мертвая ссылка, это все Я мог найти: https://github.com/stevespringett/headlines)? Его цель — сделать заголовки, связанные с безопасностью, вопросом конфигурации, а не кода, как вы просите.

{
  "XContentTypeConfig": {
    "enabled": true
  },

  "XFrameOptionsConfig": {
    "enabled": true,
    "value":"DENY"
  },

  "XssProtectionConfig": {
    "enabled": true
  },

  "HstsConfig": {
    "enabled": true,
    "includeSubdomains":true,
    "maxAge":31536000
  },

  "CspConfig": {
    "csp": {
      "default-src":["'self'"]
    },
    "cspReportOnly":{}
  },

  ... snip
}
person oreoshake    schedule 31.08.2016
comment
Ссылка на Github, предоставленная в вашем ответе, недействительна. - person Amir Keshavarz; 05.09.2017
comment
Странно, репо пропало. Я добавил github.com/stevespringett/headlines, который выглядит так же. - person oreoshake; 05.09.2017