Skip to main content

Adds middleware to give some added protection against the BREACH attack in Django.

Project description

Extra mitigation against the BREACH attack for Django projects.

django-debreach provides additional protection to Django’s built in CSRF token masking by randomising the content length of each response. This is achieved by adding a random string of between 12 and 25 characters as a comment to the end of the HTML content. Note that this will only be applied to responses with a content type of text/html.

When combined with the built-in mitigations in Django and rate limiting (either in your web-server, or by using something like django-ratelimit), the techniques here should provide a fairly comprehensive protection against the BREACH attack.

PyPI Build status Coverage

Installation & Usage

Install from PyPI using:

$ pip install django-debreach

To enable content length modification for all responses, add the debreach.middleware.RandomCommentMiddleware to the start of your middleware, but after the GzipMiddleware if you are using that.:

MIDDLEWARE_CLASSES = (
    'debreach.middleware.RandomCommentMiddleware',
    ...
)

or:

MIDDLEWARE_CLASSES = (
    'django.middleware.gzip.GzipMiddleware',
    'debreach.middleware.RandomCommentMiddleware',
    ...
)

If you wish to disable this feature for selected views, simply apply the debreach.decorators.random_comment_exempt decorator to the view.

If you only want to protect a subset of views with content length modification then it may be easier to not use the middleware, but to selectively apply the debreach.decorators.append_random_comment decorator to the views you want protected.

Python 2 and Django < 2.0 support

Version 2.0.0 drops all support for Python 2 and Django < 2.0. If you need support for those versions continue using django-debreach>=1.5.2,<2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-debreach-2.1.0.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

django_debreach-2.1.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file django-debreach-2.1.0.tar.gz.

File metadata

  • Download URL: django-debreach-2.1.0.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.0.1 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.7

File hashes

Hashes for django-debreach-2.1.0.tar.gz
Algorithm Hash digest
SHA256 aeac9f43e0ea97830bed69cb309ad5746b5ed2b9dce733ac4c136c8e16a7d6e5
MD5 08a080060b1659e70041ee4fcd728ba8
BLAKE2b-256 1f1a2bc5970d6b848c7ff4ab2932493a8e25bbed47f7668e4c3338152defc01a

See more details on using hashes here.

File details

Details for the file django_debreach-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: django_debreach-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.0.1 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.7

File hashes

Hashes for django_debreach-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 03988a228a387ec4a2d332698ad610913d32dbcad672cf5a78842639bfeece6b
MD5 419528f4fb79e15fa7d0e1395fd4b70c
BLAKE2b-256 366c8b451b1fc650f7a4336e03a5a56d555f823b6b94f1468728d650ef4d42e1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page