Реализация политики безопасности контента в nodejs / reactjs SPA? - PullRequest
0 голосов
/ 19 мая 2018

Приветствую всех,

Я только начал внедрять CSP в разработке моего сайта.у меня есть Nodejs / экспресс-сервер, который обслуживает реагирует на js с помощью редуктора и реагирует на маршрутизатор. 4 Я использовал приложение «создать реагирование» для внешнего интерфейса

. Я обнаружил, что в nodejs есть модуль под названием шлем и * 1007.* csp , что я реализовал их, и мне удалось получить заголовок ответа, как показано на рисунке ниже enter image description here

, но в приложении веб-интерфейса ничего не происходит, если я не добавлюметатег

<meta http-equiv="Content-Security-Policy" content=" frame-src 'none'">

по этому метатегу я смог успешно не загружать ни одного iframe на странице, но не смог сделать это без тега

, так что вот мои вопросы

  1. есть ли необходимость в модуле шлема nodejs в моем приложении?

  2. , если да, то как интегрировать модуль шлема nodejs с моим приложением реагирования

  3. использует метатег CSP в index.html предпочтительный способ сделать это

    любая помощь приветствуется благодаря

1 Ответ

0 голосов
/ 19 мая 2018

В вашем примере заголовок, заданный шлемом: x-frame-options имеет значение 'SAMEORIGIN', в вашем метатеге - 'none'.У них просто разные значения, поэтому разное поведение.

Просто измените конфигурацию:

// ... code to create your express instance here

app.use(helmet({
   frameguard: {
   action: 'deny'
 }
 // other helmet settings...
}));

// other app middleware and starting express here...

Всегда используйте заголовки HTTP, а не метатег.Мета-теги - это просто элементы DOM, поэтому они могут быть изменены.Не так просто с заголовками, и с помощью заголовков вы просите браузеры соответствовать вашему CSP.

RFC 7034:

Кроме того,X-Frame-Options должны быть отправлены как поле заголовка HTTP и явно игнорируются пользовательскими агентами при объявлении с мета
http-эквивалентным тегом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...