Skip to content
This repository was archived by the owner on Feb 7, 2022. It is now read-only.

tevix/webfirewall

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

Web firewall middleware compatible with Express/Restify frameworks.

Install

npm install --save webfirewall

Config params example

The values on the params 'paths', 'ipAddresses', 'roles', 'origin' and 'users', can be regular expressions (RegExp). If strings, the comparison is done using the wildcard module.

const config = {
    populationStrategy: 'restify', // supported values: express/restify
    defaultAction: 'DROP', // supported values: ACCEPT/DROP 
    getUserPhone: (req) => Promise.resolve(req.user ? req.user.phone: null), // custom population strategy for user phone (optional)
    getUserEmail: (req) => Promise.resolve(req.user ? req.user.email: null), // custom population strategy for user email (optional)
    getUserRoles: (req) => Promise.resolve(req.user ? req.user.roles: null), // custom population strategy for user roles (optional)
    rules: [{
        methods: ['GET'],
        paths: ['/system/login'],
        ipAddresses: ['*'], // optional
        roles: ['*'], // optional
        origin: ['*'], // optional
        users: ['*'], // optional
        secure: true, // optional
        action: 'ACCEPT', // supported values: ACCEPT/DROP
        handler: (req) => Promise.resolve(true) // optional
    }, {
        methods: ['POST'],
        paths: ['/comments'],
        users: ['*'], 
        secure: true,
        action: 'ACCEPT'
    }, {
        methods: ['POST'],
        paths: ['/system/restart'],
        roles: ['ADMIN'], 
        secure: true,
        action: 'ACCEPT'
    }]
}

Usage

const restify = require('restify');
const server = restify.createServer({
    name: 'yourapp.com',
    version: ['1.0.0']
});
const firewall = require('webfirewall');

server.use(firewall({
    populationStrategy: 'restify',
    defaultAction: 'ACCEPT',
    rules: []
}));

JWT authentication

JSON Web Token authentication is a great candidate to be used in collaboration with this module. This module is fully integrated with the com.kyberneees.auth.jwt module.

About

Web firewall middleware compatible with Express/Restify frameworks.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%