Skip to main content

Adds middleware and context processors to give some protection against the BREACH attack in Django.

Project description

Basic mitigation against the BREACH attack for Django projects.

When combined with rate limiting in your web-server the techniques here should provide at least some protection against the BREACH attack.

https://travis-ci.org/lpomfrey/django-debreach.png?branch=master

Installation

Install from PyPI using:

$ pip install django-debreach

If installing from git you’ll also need to install the PyCrypto library.

Add to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'debreach',
    ...
)

Configuration

CSRF token masking

To mask CSRF tokens in the template add the debreach.context_processors.csrf to the end of your TEMPLATE_CONTEXT_PROCESSORS:

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'debreach.context_processors.csrf',
)

And add the debreach.middleware.CSRFCryptMiddleware to your middleware, before django.middleware.csrf.CSRFMiddleware:

MIDDLEWARE_CLASSES = (
    'debreach.middleware.CSRFCryptMiddleware',
    ...
    'django.middleware.csrf.CSRFMiddleware',
    ...
)

This works by AES encrypting the CSRF token when it is added to the template, so that {% csrf_token %} now produces a hidden field with a value that is "<random-crypt-text>$<actual-csrf-token-encrypted-with-random-crypt-text>". Then, when the form is POSTed, the middleware decrypts the CSRF token back into it’s original form. This ensures that the CSRF content is never the same between requests.

Content length modification

To also randomise the content length of HTML content, add the debreach.middleware.RandomCommentMiddleware to the start of your middleware, but before the GzipMiddleware if you are using that.

This works by adding a random string of between 12 and 25 characters as a comment to the end of the HTML content.

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-0.2.0.tar.gz (7.9 kB view details)

Uploaded Source

File details

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

File metadata

File hashes

Hashes for django-debreach-0.2.0.tar.gz
Algorithm Hash digest
SHA256 36d09fd744de62acb43261eced3864efc78076b98403df51f3e91cd9380ea341
MD5 3c76456925cd1d167307a0d21c881457
BLAKE2b-256 d6c1afef4266a0130d7df982838cf0ba92de31198155923b881149db1027a11f

See more details on using hashes here.

Supported by

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