DEV Community

loading...
Cover image for Como tornar sua API express mais segura com Helmet

Como tornar sua API express mais segura com Helmet

gabrielrufino profile image Gabriel Rufino ・2 min read

Segurança é assunto sério! Você tem se preocupado com a segurança de suas APIs?

Quando se trata de APIs contruídas com Express.js, 1 passo simples pode ajudar você a aumentar o nível de segurança do seu sistema: a biblioteca Helmet.

Helmet Website

Quem é Helmet?

Helmet é uma biblioteca para Express.js que agrega 12 middlewares simples, responsáveis por setar alguns headers nas respostas HTTP.

Vamos fazer um exemplo simples logo a seguir:

Exemplo simples

$ mkdir my-api
$ cd my-api
$ npm init -y
$ npm install express --save
Enter fullscreen mode Exit fullscreen mode

Crie um arquivo index.js:

const express = require('express')

const app = express()

app.get('/', (request, response) => {
  return response.json({
    api: 'live'
  })
})

app.listen(3000)
Enter fullscreen mode Exit fullscreen mode

Inicie o servidor:

$ node index.js
Enter fullscreen mode Exit fullscreen mode

Perceba os headers retornados pela requisição sem o uso do helmet:

Insomnia

Vamos incluir o helmet em nossa API. Primeiro, faça a instalação do package:

$ npm install helmet --save
Enter fullscreen mode Exit fullscreen mode

Importe e inclua no app express da seguinte forma:

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

const app = express()

app.use(helmet())

app.get('/', (request, response) => {
  return response.json({
    api: 'live'
  })
})

app.listen(3000)
Enter fullscreen mode Exit fullscreen mode

Reinicie o servidor:

$ node index.js
Enter fullscreen mode Exit fullscreen mode

Conheça os novos headers setados pelo helmet:

Insomnia

Esses headers adicionam o nível a mais de segurança em sua API. Como por exemplo o Strict-Transport-Security, que permite que um site informe aos navegadores que ele deve ser acessado apenas por HTTPS, em vez de usar HTTP.

Alguns middlewares vêm ativados por padrão, outros não. Saiba mais em https://helmetjs.github.io/

Até a próxima!

Discussion (1)

pic
Editor guide
Collapse
mayronceccon profile image
Mayron Ceccon

show!! 💪🤘😀