npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

secure-redirects

v1.0.0

Published

Express middleware to validate and secure redirects

Downloads

9

Readme

secure-redirects

An Express middleware to stop unvalidated redirects and forwards.

Build Status Coverage Status

Installation

npm install --save secure-redirects

Why should I secure my Express redirects?

https://www.owasp.org/index.php/Top_10_2013-A10-Unvalidated_Redirects_and_Forwards

API

var secureRedirects = require('secure-redirects');

secureRedirects(options)

Create a new secureRedirects middleware by using the default options. By default, you don't need to pass any options into it and it will lock your redirects to your current domain. This happens by comparing the redirection URL host against the current host to see if they differ.

options.validator

If you need custom functionality then you can pass in a custom validator function. This should be a function which returns a boolean which should be true if the redirection host is valid or false if the redirection host is invalid. The redirection hostname and the current hostname will be passed to the validator.

var secureRedirects = require('secure-redirects');

var options = {
    // Only allow redirection to google.com
    validator: function(redirectHostname, currentHostname) {
        return (redirectHostname === 'google.com');
    }
};

app.use(secureRedirects(options));

options.logger

The logger defaults to console but you can pass another logger object, such as Winston into the options if required. The logger is assumed to contain a warn property which is called if the redirection URL is being re-written.

var secureRedirects = require('secure-redirects');

var options = {
    logger: myCustomLogger
};

app.use(secureRedirects(options));

options.redirectUrl

By default the middleware will redirect to the root of the domain that the Express server is running on. You can override this behaviour by passing a specified redirection url as part of the options.

var secureRedirects = require('secure-redirects');

// Redirect to https://twitter.com if bad redirect is encountered
var options = {
    redirectUrl: 'https://twitter.com'
};

app.use(secureRedirects(options));

secureRedirect()

Create a new secure-redirect Express middleware which stops insecure redirects outside of the current domain.

Example

Simple app that will not allow redirects outside of the current domain

var express = require('express')
var secureRedirects = require('secure-redirects')

var app = express()

app.use(secureRedirects())

app.get('/', function (request, response) {
    response.send('hello, world!')
})

app.get('/bad-redirect', function (request, response) {
    response.redirect('https://google.com');
})

app.get('/bad-user-redirect', function (request, response) {
    var redirectUrl = request.query.url;
    response.redirect(redirectUrl);
})

License

MIT