Giter Site home page Giter Site logo

dansmaculotte / nuxt-security Goto Github PK

View Code? Open in Web Editor NEW
57.0 3.0 5.0 11.2 MB

Module for Nuxt.js to configure security headers and more

License: MIT License

JavaScript 99.03% Vue 0.97%
nuxt nuxt-module content-security-policy csp hsts strict-transport-security referrer-policy feature-policy security-txt

nuxt-security's Introduction

@dansmaculotte/nuxt-security

npm version npm downloads License

Module for Nuxt.js 2 to configure security headers and more

Compatibility with Nuxt releases

This module as been developed for Nuxt 2. If you are looking for an equivalent compatible with Nuxt 3, please have a look to https://www.npmjs.com/package/nuxt-security.

Features

This module allows you to configure various security headers such as CSP, HSTS or even generate security.txt file. Here is a list of availables features :

  • Strict-Transport-Security header
  • Content-Security-Policy header
  • X-Frame-Options header
  • X-Xss-Protection
  • X-Content-Type-Options header
  • Referrer-Policy header
  • Permissions-Policy header (previously Feature-Policy)
  • security.txt file generation

ToDo

  • Sign security.txt with OpenPGP
  • Headers as meta tags for SPA
  • Public-Key-Pins

๐Ÿ“– Release Notes

Setup

  1. Add @dansmaculotte/nuxt-security dependency to your project
yarn add @dansmaculotte/nuxt-security # or npm install @dansmaculotte/nuxt-security
  1. Add @dansmaculotte/nuxt-security to the modules section of nuxt.config.js
{
  modules: [
    // Simple usage
    '@dansmaculotte/nuxt-security',

    // With options
    [
      '@dansmaculotte/nuxt-security',
      {
        /* module options */
      }
    ]
  ],

  // Top level options
  security: {}
}

Options

dev

  • Default: process.env.SECURITY_DEV || false

Enable module in development mode

hsts

  • Default: null

This option rely on helmet hsts package.

Example:

hsts: {
  maxAge: 15552000,
  includeSubDomains: true,
  preload: true
},

csp

  • Default: null

This option rely on helmet csp package.

Example:

csp: {
  directives: {
    defaultSrc: ["'self'"],
    scriptSrc: ["'self'"],
    objectSrc: ["'self'"],
  },
  reportOnly: false,
},

referrer

  • Default: null

This option rely on helmet referrer policy package.

Example:

referrer: 'same-origin',

permissions

  • Default: null

This option rely on permissions policy package.

Example:

permissions: {
  notifications: ['none']
},

Note: this come in replacement for feature option as Feature-Policy header is deprecated. Previous features option is still supported for now but displays a warning and use Permissions-Policy header instead.

securityFile

  • Default: null

This option allows you to generate a security.txt described by securitytxt.org.

When generating for SPA applications, the file will appear in the dist/.well-known folder.

For universal applications, the file is accessible at this path: /.well-known/security.txt.

Example:

securityFile: {
  contacts: [
    'mailto:[email protected]',
    'https://example.com/security'
  ],
  // or contacts: 'mailto:[email protected]'
  canonical: 'https://example.com/.well-know/security.txt',
  preferredLanguages: ['fr', 'en'],
  // or preferredLanguages: 'fr',
  encryptions: ['https://example.com/pgp-key.txt'],
  // or encryptions: 'https://example.com/pgp-key.txt',
  acknowledgments: ['https://example.com/hall-of-fame.html'],
  // or acknowledgments: 'https://example.com/hall-of-fame.html',
  policies: ['https://example.com/policy.html'],
  // or policies: 'https://example.com/policy.html',
  hirings: ['https://example.com/jobs.html']
  // or hirings: 'https://example.com/jobs.html'
},

additionalHeaders

  • Default: false

If true it adds additional headers :

Development

  1. Clone this repository
  2. Install dependencies using yarn install or npm install
  3. Start development server using npm run dev

License

MIT License

Copyright (c) Dans Ma Culotte [email protected]

nuxt-security's People

Contributors

dependabot[bot] avatar gaelreyrol avatar miguel-a-calles-mba avatar rtouze avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

nuxt-security's Issues

Feature Policy to Permission Policy

Hi, I just saw that the Feature Policy is now renamed to Permission Policy. When will this reflect in nuxt-security ? because in the configuration, it is still using the feature-policy and prompting a warning in the console. "error with feature-policy header unrecognized feature 'notifications'". Thank you

The module still runs when dev is set to false.

I set the nuxt.config.js file with the following settings:

modules: [
    '@nuxtjs/axios',
    '@nuxtjs/pwa',
    [
      '@dansmaculotte/nuxt-security',
      {
        dev: false,
        csp: {
          directives: {
            defaultSrc: ["'self'"],
            scriptSrc: ["'self'"],
            connectSrc: ["'self'"],
            imgSrc: ["'self'"],
            styleSrc: ["'self'"]
          },
          loose: false,
          reportOnly: false,
          setAllHeaders: false,
          disableAndroid: false,
          browserSniff: true
        },
      }
    ]
  ],

The CSP headers still load when I use the npm run dev command.

Add cache-control header

Thanks for this module! Its helped a lot.

Do you have any plans to add the cache-control header?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.