Как определить, поддерживает ли браузер CSP на сервере? - PullRequest
1 голос
/ 20 сентября 2019

У меня есть сервер helper.com, который обслуживает ответы на GET запросы с настраиваемым CSP, например:

Content-Security-Policy: default-src 'self'; frame-ancestors https://my.com;

Идея состоит в том, что только my.com может включатьвиджет из helper.com.

Это прекрасно работает в современных браузерах (Chrome, Safari, Firefox).

Вопрос в том, как надежно исключить браузеры, которые не поддерживают CSP?

Это все семейство IE (?), Очень старые версии хороших браузеров, устаревшие браузеры, даже NN, если кто-то использует его?

Техническая причина в том, что если у пользователя естьсеансовый cookie на helper.com, я планирую предоставлять конфиденциальную информацию пользователя, и я беспокоюсь о случаях, когда кто-то использует, например, IE, вошел в систему, и некоторые хакеры создадут hacker.com, который попытается извлечь данные из helper.com через ajaxили тег тега или ресурс шрифта или изображение для холста и кражи конфиденциальных данных пользователя.

Если я работаю с CSP, я хочу быть уверенным, что он будет применен браузером.

1 Ответ

1 голос
/ 25 сентября 2019

То, что я сделал бы, это набор следующих шагов:

  1. Обычно браузеры отправляют user-agent в заголовках запроса.И нет никакого способа изменить заголовок user-agent, отправленный браузером из кода на стороне клиента.Таким образом, я бы использовал это значение на стороне веб-сервера, чтобы решить, с каким браузером я имею дело.ref: понимание user-agent
  2. Затем на основе браузера и матрицы совместимости заголовков CSP Я бы знал, должен ли я разрешить / запретить этот браузер.Конечно, я точно знаю, какую поддержку заголовков CSP мне требуется для моего веб-сайта.
  3. Для перечисленных в черном списке браузеров я бы сказал browser-not-supported.html, а для других я бы пошел дальше.
  4. Я также добавил бы некоторый тривиальный код JS в мои index.html или другие html-страницы, чтобы не делать запросов, если этот браузер не поддерживает точные заголовки CSP, которые мне нужны для моего сайта.
  5. Также,Я добавил бы к моему http-ответу заголовки, совместимые со старыми браузерами, например X-Frame-Options "SAMEORIGIN", которые будут служить нашей конкретной цели в случае, если браузер не соблюдает / не понимает заголовки CSP.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...