Какие модули шлема я должен использовать в своем REST Api - PullRequest
1 голос
/ 16 марта 2020

Вопрос:

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

Справочная информация:

Я создаю Node / Express REST Api и продолжаю видеть Шлем выскочил как промежуточное ПО безопасности, которое я должен использовать. Если посмотреть на документацию Helmet, то некоторые модули (Content Security Policy, Cross Domain и т. Д.) Применимы только к интерфейсным приложениям. Какие модули следует использовать в шлеме для API отдыха?

Ответы [ 3 ]

2 голосов
/ 16 марта 2020

tl; dr: для API может быть полезно следующее, хотя вы можете установить больше, чтобы быть безопасным:

  • helmet.expectCt, который устанавливает Expect-CT заголовок, полезно, если потребитель вашего API знает, как обрабатывать прозрачность сертификата
  • helmet.frameguard, который устанавливает заголовок X-Frame-Options, полезно, если ваши ответы API когда-либо помещаются в iframe или аналогичный. (Я сталкивался с этим лично.)
  • helmet.hsts, который устанавливает заголовок Strict-Transport-Security, помогает держать пользователей на HTTPS
  • helmet.noSniff , который устанавливает заголовок X-Content-Type-Options, полезен в браузерах, которые могут попытаться автоматически определить тип ответа API и сделать что-то неожиданное. (Я сталкивался с этим лично.)
  • helmet.permittedCrossDomainPolicies, который устанавливает заголовок X-Permitted-Cross-Domain-Policies, может быть полезно для защиты вашего сайта от странных запросов от продуктов Adobe, таких как Fla sh

Автор Helmet здесь.

Я бы сказал, что есть две причины использовать шлем (или устанавливаемые им заголовки HTTP) с API:

  1. Некоторые заголовки полезны в случаях использования без браузера, например, в REST API.
  2. В случае, если ваш ответ когда-либо загружается в браузер. Например, если хакер помещает его в <iframe> и вызывает что-то неожиданное. (У старых браузеров иногда возникают проблемы, приводящие к уязвимостям.) Вы также можете сделать это для защиты своего API в будущем, если он когда-либо загружен в браузер, даже если это не сегодня.

Шлем - это просто набор из 13 небольших промежуточных программ. Большинство из них устанавливают один заголовок HTTP-ответа, и большинство из них используются только в браузерах. Некоторые, однако, иногда полезны для API (REST или иным образом).

Давайте перечислим их:

  • helmet.contentSecurityPolicy, который устанавливает Content-Security-Policy заголовок, вероятно, бесполезный
  • helmet.dnsPrefetchControl, который устанавливает заголовок X-DNS-Prefetch-Control, вероятно, бесполезен
  • helmet.expectCt, который устанавливает заголовок Expect-CT, может быть полезен , если потребитель вашего API знает, как обрабатывать прозрачность сертификата
  • helmet.featurePolicy, который устанавливает Feature-Policy header, вероятно, бесполезен
  • helmet.frameguard, который устанавливает заголовок X-Frame-Options, может быть полезен в случае, если ваши ответы API когда-либо помещаются в iframe или аналогичный. (Я сталкивался с этим лично.)
  • helmet.hidePoweredBy, который удаляет заголовок X-Powered-By, вероятно, бесполезен (это даже не так полезно в браузерах!)
  • helmet.hsts, который устанавливает заголовок Strict-Transport-Security, может быть полезно , чтобы держать пользователей на HTTPS
  • helmet.ieNoOpen , который устанавливает заголовок X-Download-Options, вероятно, бесполезен
  • helmet.noCache будет удален в будущих версиях шлема и в любом случае не очень полезен для безопасности, так что, вероятно, бесполезно
  • helmet.noSniff, который устанавливает заголовок X-Content-Type-Options, может быть полезным в браузерах, которые могут попытаться автоматически определить тип ответа API и выполнить что-то неожиданное. (Я сталкивался с этим лично.)
  • helmet.permittedCrossDomainPolicies, который устанавливает заголовок X-Permitted-Cross-Domain-Policies, может быть полезен для защиты вашего сайта от странных запросов от Продукты Adobe, такие как Fla sh
  • helmet.referrerPolicy, которые устанавливают заголовок Referrer-Policy, вероятно, бесполезны
  • helmet.xssFilter , который устанавливает заголовок X-XSS-Protection, вероятно, бесполезен

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

0 голосов
/ 16 марта 2020

Шлем - это промежуточное ПО Express. js. И используется, чтобы избежать внедрения скрипта. Когда вы инициализируете свое приложение, используйте шлем так:

const express = require('express');
const helmet = require('helmet');

const app = express();

app.use(helmet());

Надеюсь, это помогло:)

0 голосов
/ 16 марта 2020

Основная причина, по которой люди используют шлем в своем успокаивающем API, заключается в том, чтобы избегать (XSS) и внедрения скриптов. Все, что вам нужно сделать, это. Помните, что это просто express промежуточное ПО.

const helmet = require("helmet");
app.use(helmet())
...