/frameguard

Middleware to set the X-Frame-Options header, mitigating things like clickjacking

Primary LanguageJavaScriptMIT LicenseMIT

Frameguard

Build Status js-standard-style

Looking for a changelog?

The X-Frame-Options HTTP header restricts who can put your site in a frame which can help mitigate things like clickjacking attacks. It has three modes: DENY, SAMEORIGIN, and ALLOW-FROM. If your app does not need to be framed (and most don't) you can use the default DENY. If your site can be in frames from the same origin, you can set it to SAMEORIGIN. If you want to allow it from a specific URL, you can allow that with ALLOW-FROM and a URL.

Usage:

var frameguard = require('frameguard')

// Don't allow me to be in ANY frames:
app.use(frameguard('deny'))

// Only let me be framed by people of the same origin:
app.use(frameguard('sameorigin'))
app.use(frameguard())  // defaults to this

// Allow from a specific host:
app.use(frameguard('allow-from', 'http://example.com'))

This has pretty good (but not 100%) browser support: IE8+, Opera 10.50+, Safari 4+, Chrome 4.1+, and Firefox 3.6.9+. The ALLOW-FROM header option is not supported in most browsers. Those browsers will ignore the entire header, and the frame will be displayed.