#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? и политика безопасности контента?