How to use helmet

Comprehensive helmet code examples:

How to use helmet.ieNoOpen:

1
2
3
4
5
6
7
8
9

const helmet = require('helmet')

exports.dnsPreFetchControl = helmet.dnsPrefetchControl()
exports.frameGuard = helmet.frameguard()
exports.ieNoOpen = helmet.ieNoOpen()
exports.noSniff = helmet.noSniff()
exports.xssFilter = helmet.xssFilter()
exports.referrerPolicy = helmet.referrerPolicy({ policy: 'same-origin' })

How to use helmet.noSniff:

2
3
4
5
6
7
8
9
const helmet = require('helmet')

exports.dnsPreFetchControl = helmet.dnsPrefetchControl()
exports.frameGuard = helmet.frameguard()
exports.ieNoOpen = helmet.ieNoOpen()
exports.noSniff = helmet.noSniff()
exports.xssFilter = helmet.xssFilter()
exports.referrerPolicy = helmet.referrerPolicy({ policy: 'same-origin' })

How to use helmet.noCache:

145
146
147
148
149
150
151
152
153
154
// to download the newer, more performant and safer version, you can (try to)
// disable caching on client's browser, for your website. It can be useful
// in development too. Caching has performance benefits, and you will lose them,
// use this option only when there is a real need.

// Use helmet.noCache()



/** 10) Content Security Policy - `helmet.contentSecurityPolicy()` */

How to use helmet.dnsPrefetchControl:

83
84
85
86
87
88
89
90
91
92
}
app.use(
  helmet.contentSecurityPolicy(csp_options)
);
app.use(
  helmet.dnsPrefetchControl({
    allow: process.env.IDM_DNS_PREFETCH_ALLOW === 'true'
  })
);
app.use(helmet.expectCt());

How to use helmet.csp:

25
26
27
28
29
30
31
32
33
34

`csp` - предотвращение межсайтовых вмешательств через задание заголовка `Content-Security-Policy`, с полным списком задаваемых параметров можно ознакомиться [здесь](https://helmetjs.github.io/docs/csp/);

```js
app.use(
    helmet.csp({
        directives: {
            objectSrc: ['none'],
            workerSrc: false, //значение не задается
        },

How to use helmet.featurePolicy:

59
60
61
62
63
64
65
66
67
68

`featurePolicy` - позволяет ограничить использование некоторых функций браузера (например, использование камеры или геолокации) заданием заголовка `Feature-Policy`, с полным списком функций можно ознакомиться [здесь](https://helmetjs.github.io/docs/feature-policy/);

```js
app.use(
    helmet.featurePolicy({
        features: {
            camera: ['none'], //запрет использования web-камеры
            fullscreen: ['none'], //запрет использования Fullscreen API
            geolocation: ['none'], //запрет использования геолокации

How to use helmet.crossOriginResourcePolicy:

271
272
273
274
275
276
277
278
279
  app.use(cors());
}

// helmet helps set a variety of headers to better secure your app
app.use(
  helmet.crossOriginResourcePolicy({ 
    policy: "cross-origin" 
  })
);

How to use helmet.permittedCrossDomainPolicies:

124
125
126
127
128
129
130
131
132
133
`permittedCrossDomainPolicies` - задает заголовок `X-Permitted-Cross-Domain-Policies` для предотвращения загрузки на сайте контента Adobe Flash и Adobe Acrobat;

```js
app.use(helmet.permittedCrossDomainPolicies()); //по умолчанию none
app.use(
    helmet.permittedCrossDomainPolicies({
        permittedPolicies: 'all',
    })
);
```

How to use helmet.expectCt:

47
48
49
50
51
52
53
54
55
56

`expectCt` - устанавливает заголовок `Expect-CT`;

```js
app.use(
    helmet.expectCt({
        enforce: true,
        maxAge: 90, //задается в днях
        reportUri: 'http://example.com/report',
    })

How to use helmet.xssFilter:

145
146
147
148
149
150
151
152
153
154

`xssFilter` - устанавливает заголовок `X-XSS-Protection`, активируя тем самым фильтр межсайтового скриптинга.

```js
app.use(
    helmet.xssFilter({
        setOnOldIE: true,
        reportUri: 'http://example.com/report',
    })
);

How to use helmet.frameguard:

69
70
71
72
73
74
75
76
77
app.use(bodyParser.urlencoded({ extended: false, limit: '200kb' })); // limit needs to be decently high to account for cardback uploads
app.use(favicon(`${__dirname}/public/favicon.ico`));
app.use(cookieParser());
app.use(express.static(`${__dirname}/public`, { maxAge: 86400000 * 28 }));
app.use(
        helmet.frameguard({
                action: 'deny'
        })
);

How to use helmet.referrerPolicy:

101
102
103
104
105
106
107
108
109
110
        let error = new Error();
        error.message = 'Failed Input validation. Please refresh the page';
        return res.status(403).send(error);
    });
    expressApp.use(
        helmet.referrerPolicy({
            policy: 'strict-origin-when-cross-origin',
        })
    );
};

How to use helmet.hsts:

45
46
47
48
49
50
51
52
53
54
    },
  }),
);

app.use(
  helmet.hsts({
    force: true,
    includeSubDomains: true,
    maxAge: 63072000, // 2 years
    preload: true,

How to use helmet.contentSecurityPolicy:

133
134
135
136
137
138
139
140
141
142
Примеры:

```js
// устанавливаем дефолтные директивы, перезаписываем `script-src` и отключаем `style-src`
app.use(
  helmet.contentSecurityPolicy({
    useDefaults: true,
    directives: {
      'script-src': [`'self'`, 'example.com'],
      'style-src': null,