Как использовать шлем?

#node.js #helmet.js

#node.js #helmet.js

Вопрос:

Я хочу использовать пакет шлема для выполнения следующих действий:

 set X-Frame-Options = SAMEORIGIN

Disable the X-Powered-By header.
 

Какой должна быть политика безопасности контента и как мне настроить ее с помощью helmet?
Как насчет Access-Control-Allow-Origin?

Я также хочу использовать его для включения рекомендаций по безопасности. Что вы предлагаете? Каковы эти рекомендации и как мне их установить?

Ответ №1:

Сопровождающий шлема здесь.

Прежде всего, шлема недостаточно для обеспечения безопасности ваших экспресс-приложений. Это требует понимания лучших практик, уязвимостей и многого другого. Helmet пытается решить только узкую часть этой головоломки: задать различные заголовки HTTP-ответов, связанные с безопасностью.

Например, по умолчанию Helmet установит заголовок, вызываемый X-Frame-Options SAMEORIGIN . Этот заголовок волшебным образом не делает ваше приложение безопасным, но он может помочь смягчить атаки с помощью взлома. Это также отключит заголовок, вызываемый X-Powered-By по умолчанию, который

Вот как вы используете шлем со всеми его настройками по умолчанию:

 app.use(helmet());
 

Если вы хотите, скажем, переопределить значение по умолчанию для X-Frame-Options , вы могли бы сделать что-то вроде этого:

 // Sets all of the defaults except for X-Frame-Options,
// which is set to "DENY" instead of its default
app.use(helmet({
  frameguard: { action: 'DENY' },
}));
 

И если вы хотите, чтобы шлем X-Frame-Options полностью игнорировал заголовок:

 // Sets all of the defaults except for X-Frame-Options
app.use(helmet({
  frameguard: false,
}));
 

По умолчанию Helmet отвечает за 11 заголовков, включая два упомянутых выше.

Самым важным и самым сложным в настройке заголовком шлема является Content-Security-Policy . Здесь не стоит подробно описывать; я рекомендую прочитать вводную статью MDN.

Шлем может помочь вам установить Content-Security-Policy заголовок, о котором вы можете подробнее прочитать в документации к шлему. Вот простой пример:

 app.use(
  helmet.contentSecurityPolicy({
    directives: {
      ...helmet.contentSecurityPolicy.getDefaultDirectives(),
      "script-src": ["'self'", "example.com"],
    },
  })
);
 

Вы также спрашивали о. Access-Control-Allow-Origin Это часть так называемого совместного использования ресурсов разных источников, которого Helmet не касается.

Ответ №2:

Вы можете написать что-то вроде этого:

 app.use(helmet({
  frameguard: false // for SAMEORIGIN
}));

app.disable('x-powered-by'); // for disable the X-Powered-By header.

 

Комментарии:

1. Что я должен установить для заголовка Access-Control-Allow-Origin? и политика безопасности контента?