Skip to content

pwright08/hsts

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HTTP Strict Transport Security middleware

Build Status js-standard-style

Looking for a changelog?

This middleware adds the Strict-Transport-Security header to the response. This tells browsers, "hey, only use HTTPS for the next period of time". (See the spec for more.)

This will set the Strict Transport Security header, telling browsers to visit by HTTPS for the next ninety days:

var hsts = require('hsts')

var ninetyDaysInMilliseconds = 7776000000
app.use(hsts({ maxAge: ninetyDaysInMilliseconds }))

You can also include subdomains. If this is set on example.com, supported browsers will also use HTTPS on my-subdomain.example.com. Here's how you do that:

app.use(hsts({
  maxAge: 123000,
  includeSubDomains: true
}))

Chrome lets you submit your site for baked-into-Chrome HSTS by adding preload to the header. You can add that with the following code, and then submit your site to the Chrome team at hstspreload.appspot.com.

app.use(hsts({
  maxAge: 10886400000,     // Must be at least 18 weeks to be approved by Google
  includeSubDomains: true, // Must be enabled to be approved by Google
  preload: true
}))

This'll be set if req.secure is true, a boolean auto-populated by Express. If you're not using Express, that value won't necessarily be set, so you have two options:

// Set the header based on conditions
app.use(hsts({
  maxAge: 1234000,
  setIf: function(req, res) {
    return Math.random() < 0.5;
  }
}))

// ALWAYS set the header
app.use(hsts({
  maxAge: 1234000,
  force: true
}))

Note that the max age is in milliseconds, even though the spec uses seconds. This will round to the nearest full second.

This only works if your site actually has HTTPS. It won't tell users on HTTP to switch to HTTPS, it will just tell HTTPS users to stick around. You can enforce this with the express-enforces-ssl module. This header is somewhat well-supported by browsers.

About

HTTP Strict Transport Security middleware

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%