Безопасность¶
Защите разрабатываемых приложений стоит уделить особое внимание. Обеспечение должной безопасности гарантирует непрерывную стабильную работу сервера и сохранность личных данных пользователей.
Для защиты самого соединения и передаваемых по сети данных настоятельно рекомендуется использовать один из протоколов криптографии: 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 | |