Безопасность¶
Защите разрабатываемых приложений стоит уделить особое внимание. Обеспечение должной безопасности гарантирует непрерывную стабильную работу сервера и сохранность личных данных пользователей.
Для защиты самого соединения и передаваемых по сети данных настоятельно рекомендуется использовать один из протоколов криптографии: SSL или TLS.
Одним из способов защиты Node.js приложений от самых популярных уязвимостей в интернете является использование модуля helmet
, который можно установить из репозитория npm.
1 |
|
Модуль helmet
представляет собой набор функций промежуточной обработки (middleware), устанавливающие определенные HTTP-заголовки для обеспечения безопасности.
Для использования helmet
с настройками по умолчанию просто добавьте следующий middleware.
1 2 3 4 5 |
|
Список функций промежуточной обработки, входящих в модуль helmet
:
csp
- предотвращение межсайтовых вмешательств через задание заголовка Content-Security-Policy
, с полным списком задаваемых параметров можно ознакомиться здесь;
1 2 3 4 5 6 7 8 |
|
dnsPrefetchedControl
- управляет загрузкой DNS через задание заголовка X-DNS-Prefetch-Control
;
1 2 3 4 |
|
expectCt
- устанавливает заголовок Expect-CT
;
1 2 3 4 5 6 7 |
|
featurePolicy
- позволяет ограничить использование некоторых функций браузера (например, использование камеры или геолокации) заданием заголовка Feature-Policy
, с полным списком функций можно ознакомиться здесь;
1 2 3 4 5 6 7 8 9 |
|
hidePoweredBy
- удаляет или заменяет значение заголовка X-Powered-By
, устанавливается отдельно (в случае использования express не нужен);
1 2 3 4 |
|
hsts
- управляет заголовком Strict-Transport-Security
;
1 2 3 4 5 6 7 |
|
ieNoOpen
- устанавливает заголовок X-Download-Options
для предотвращения открытия скачанных файлов в контексте вашего сайта;
1 |
|
noCache
- отключает кэширование на стороне клиента через задание заголовков Cache-Control
, Pragma
, Surrogate-Control
и Expires
;
1 |
|
noSniff
- задает заголовок X-Content-Type-Options
и тем самым предотвращает прослушивание MIME ответов с не соответствующим заявленному в Content-Type
типу данных;
1 |
|
frameguard
- предотвращает атаку clickjacking
заданием заголовка X-Frame-Options
;
1 2 3 4 5 6 |
|
permittedCrossDomainPolicies
- задает заголовок X-Permitted-Cross-Domain-Policies
для предотвращения загрузки на сайте контента Adobe Flash и Adobe Acrobat;
1 2 3 4 5 6 |
|
referrerPolicy
- управляет заголовком Referrer
задавая заголовок Referrer-Policy
;
1 2 3 4 5 6 |
|
xssFilter
- устанавливает заголовок X-XSS-Protection
, активируя тем самым фильтр межсайтового скриптинга.
1 2 3 4 5 6 |
|
Для отключения конкретных функций промежуточной обработки, входящих в helmet
и активных по умолчанию, просто передайте экземпляру модуля соответствующий конфигурационный объект.
1 2 3 4 5 6 |
|
Подобным образом также можно сразу задать настройки для всех функций промежуточной обработки.
1 2 3 4 5 6 7 8 9 10 |
|
Каждая из перечисленных функций промежуточной обработки может быть установлена отдельно. Например, это будет полезным, если вам не требуется функционал всего Node.js модуля helmet
.
1 |
|
Пример использования.
1 2 3 |
|