The Protevus Platform: Unified Full-Stack Development https://protevus.com
Find a file
2017-01-20 22:09:37 -05:00
lib Permissions 2017-01-20 22:09:37 -05:00
test Permissions 2017-01-20 22:09:37 -05:00
.gitignore 0.0.0-alpha 2017-01-12 18:57:13 -05:00
.travis.yml 0.0.0-alpha 2017-01-12 18:57:13 -05:00
LICENSE Initial commit 2017-01-10 08:24:29 -05:00
pubspec.yaml Permissions 2017-01-20 22:09:37 -05:00
README.md Permissions 2017-01-20 22:09:37 -05:00

security

version 0.0.0-alpha+3 build status

Angel middleware designed to enhance application security by patching common Web security holes.

Currently unfinished, with incomplete code coverage - USE AT YOUR OWN RISK!!!

Sanitizing HTML

app.before.add(sanitizeHtmlInput());

// Or:
app.chain(sanitizeHtmlInput()).get(...)

CSRF Tokens

app.chain(verifyCsrfToken()).post('/form', ...);
app.responseFinalizers.add(setCsrfToken());

Banning by IP

app.before.add(banIp('1.2.3.4'));

// Or a range:
app.before.add(banIp('1.2.3.*'));
app.before.add(banIp('1.2.*.4'));

// Or multiple filters:
app.before.add(banIp(['1.2.3.4', '192.*.*.*', new RegExp(r'1\.2.\3.\4')]));

// Also can ban origins
app.before.add(banOrigin('*.known-attacker.com'));

// By default, `banOrigin` forces users to have an `Origin` header.
// Use this flag to disable it:
app.before.add(banOrigin('evil.site', allowEmptyOrigin: true));

Trusted Proxy

Works well with Apache or Nginx.

// ONLY trust localhost X-Forwarded-* headers
app.before.add(trustProxy('127.0.0.1'));

Throttling Requests

Throws a 429 error if the given rate limit is exceeded.

// Example: 5 requests per minute
app.before.add(throttleRequests(5, new Duration(minutes: 1)));

Helmet

security includes a port of helmetjs. Helmet includes 11 middleware that attempt to enhance security via HTTP headers.

Call helmet to include all of them.

import 'package:angel_security/helmet.dart';

Service Hooks

Also included are a set of service hooks, ported from FeathersJS.

import 'package:angel_security/hooks.dart';

Permissions

See the tests.