Skip to main content

PyPI Version

IpBan is a Flask extension that can help protect against ip locations spamming url requests against unknown pages. Often this is to search for security issues.

The default configuration:

  • 50 attempts before ban

  • 1 hour blocking period

Once an ip address is banned any attempt to access a web address will result in a 403 forbidden result. After the default 1 hour blocking period of no access attempts the ban will be lifted. Any access attempt during the ban period will extend the ban period.

Ip addresses can be manually entered for banning. Url patterns can be configured to be excluded from ban calculations.

Installation & Basic Usage

Install via pip:

pip install flask-ipban

After installing, wrap your Flask app with an IpBan, or call ip_ban.init_app(app):

from flask import Flask
from flask_ipban import IpBan

app = Flask(__name__)
IpBan(app)

Enclosed is a small example application

Options

  • ban_count, default 50, Number of observations before banning

  • ban_seconds, default 60, Number of seconds ip address is banned

Methods

  • block(ip_address, permanent=False) - block the specific address optionally forever

  • add(reason='404') - increase the observations for the current request ip

  • url_pattern_add('reg-ex-pattern') - exclude any url matching the pattern from checking

  • url_pattern_remove('reg-ex-pattern') - remove pattern from the url whitelist

  • url_block_pattern_add('reg-ex-pattern', match_type='regex') - add any url matching the pattern to the block list. match_type can be ‘string’ or ‘regex’. String is direct match. Regex is a regex pattern.

  • url_block_pattern_remove('reg-ex-pattern') - remove pattern from the url block list

  • ip_whitelist_add('ip-address') - exclude the given ip from checking

  • ip_whitelist_remove('ip-address') - remove the given ip from the ip whitelist

  • load_nuisances(file_name=None) - add a list of nuisances to url pattern block list from a file. See below for more information.

Example code

from flask import Flask
from flask_ipban import IpBan

app = Flask(__name__)
ip_ban = IpBan(app)

@app.route('/normal')
def normal():
    return 'Normal'

Nuisance file

ip_ban includes a file of common web nuisances that should not be allowed on a flask site. It includes:

  • Blocking any non flask extension such as .jsp, .asp etc.

  • Known hacking urls.

Load them by calling ip_ban.load_nuisances()

You can add your own nuisance file by calling with the parameter file_name=.

See the nuisance.txt file in the source for formatting and details.

Licensing

  • Apache 2.0

Release files for flask-ipban 0.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for flask-ipban 0.1.8
File Interpreter ABI Platform
flask_ipban-0.1.8-py2.py3-none-any.whl Python 2, Python 3 none any Details

Release files / flask_ipban-0.1.8-py2.py3-none-any.whl

Download URL flask_ipban-0.1.8-py2.py3-none-any.whl
Size 12.2 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
74f1c2ea25640391669969e826577cc75a06d7eadf8493c84b62cfe022d97e92
BLAKE2b-256 checksum
How to use checksums
f5830f5cc1e1b4ec30ea45ef7244874373c6ba0cd132efdb1650fe44fe4f53de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.15rc1

Release history Release notifications | RSS feed

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.13

2 release files

1.0.9

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.9

1 release file

This release

0.1.8 This release

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.4

1 release file

0.1.3

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page