UNPKG

express-waf

Version:

A simple Web Application Firewall (WAF)

81 lines (66 loc) 2.67 kB
express-waf =========== A small web application firewall for the NodeJS Express framework. Installation ---------- ``` npm install --save express-waf ``` Usage ---------- The constructor expects the configuration for the blocker and optional settings as parameters. Blocker configuration includes: - blockTime: A blacklist timeout which indicates the time after that entries from the blacklist will be removed. - db: The used database for the blacklist. In the folder "/database" you can find predefined database connectors. If you don't find the connector you need, you may define your own database connector. This connector must define an add-, a remove- and a contains-function. ``` var ExpressWaf = require('express-waf'); var emudb = new ExpressWaf.EmulatedDB(); var waf = new ExpressWaf.ExpressWaf({ blocker:{ db: emudb, blockTime: 1000 }, log: true }); ``` After that you can add additional modules to the firewall. Without these modules the firewall won't block any attacks. The basic functionality only includes a blacklist for evil hosts and a logging mechanism for attacks. Additional modules can be found in the folder "/modules". This includes, for example a module against SQL Injection attacks or a module against CSRF attacks. For example, this is how to add the CSRF module: ``` waf.addModule('csrf-module', { allowedMethods:['GET', 'POST'], refererIndependentUrls: ['/'], allowedOrigins: ['www.example.com'] }, function (error) { console.log(error); }); ``` Don't forget to finally add the check method of express-waf as middleware: ``` app.use(waf.check); ``` If you forget this step your firewall won't do anything! This is it. Your firewall is now configured to be used with your node.js/express application. List of Modules --------- - csrf-module: https://www.owasp.org/index.php/CSRF - lfi-module: https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion - sql-module: https://www.owasp.org/index.php/SQL_Injection - xss-module: https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 Code-Quality --------- All modules can be tested by using the jasmine-node testing framework: ``` jasmine-node spec/ ``` Code coverage can be calculated with istanbul: ``` istanbul cover jasmine-node spec/ ``` Current jenkins report for this project: - ![BuildStatus](http://jenkins.tomm-apps.de/buildStatus/icon?job=tommapps_express-waf) - ![Test](http://jenkins.tomm-apps.de:3434/badge/tommapps_express-waf/test) - ![LastBuild](http://jenkins.tomm-apps.de:3434/badge/tommapps_express-waf/lastbuild) - ![Coverage](http://jenkins.tomm-apps.de:3434/badge/tommapps_express-waf/coverage)