Skip to main content

A Django app that evaluates CSP reports to identify malicious activity.

Project description

CSP Observer

CSP Observer Logo

CSP Observer is a Django app that monitors incoming Content Security Policy (CSP) reports for your site. It tries to detect security/privacy issues and notifies your visitors.

Installation

  1. In settings.py add "csp_observer" to your INSTALLED_APPS:
    INSTALLED_APPS = [
        ...
        'csp_observer',
    ]
    
  2. Also in settings.py add the following entry to MIDDLEWARE:
    MIDDLEWARE = [
        ...
        'csp_observer.middleware.CspReportMiddleware',
    ]
    
    Please make sure that it is the last entry in the middlewares, otherwise another installed middleware could interfere with the operation of CSP Observer.
  3. Include the url configuration in your urls.py:
    from django.urls import path, include
    
    urlpatterns = [
        ...
        path('csp/', include('csp_observer.urls')),
    ]
    
    You can change this path but keep in mind, that this path determines the access URL to the admin dashboard. Example: If you change the path for CSP Observer to path('cspobserver/', ...), the admin dashboard will now be accessible at /cspobserver/admin.
  4. Run python manage.py migrate to create the necessary database tables.
  5. The basic installation is finished! View the Configuration section for more information on how to configure the app.

Admin Interface

A basic administration interface is available under /csp/admin

Commands

List of commands integrated into manage.py:

Command Description
cleanunused Removes old sessions and reports from the database. Should be run regularly.
updaterules Updates the rules from the central rule repository.

Configuration

Overview of all available settings and their default values:

Setting Default Description
REPORT_ONLY True Wether to enforce the CSP rules or only report them.
ENABLED_PATHS ["/"] An array of paths for which the CSP header should be set.
CSP_POLICIES {'default-src': ["'self'"],'script-src': ["'self'", "'unsafe-inline'"],'connect-src': ["'self'"],} A disctionary of CSP policies that should be applied. Key is the name of the directive and value is a list of expressions.
USE_NEW_API False Whether to enable the new Reporting API or use the old report-uri directive
USE_SCRIPT_NONCE True Add nonce to all script tags to catch inline script violations
USE_STYLE_NONCE True Add nonce to all style tags to catch inline style violations
SESSION_KEEP_DAYS 14 The number of days sessions should be kept in the database.
IS_MASTER_COLLECTOR False Indicates if the instance should function as a central collector of CSP reports for multiple other instances.
AUTHORIZED_REPORTERS [] A list of domains that are allowed send their CSP reports to the master. Example: ['http://127.0.0.1:8000', 'https://example.com']
REMOTE_SECRET '' A shared secret that must be the same for the master collector and all reporters.
REMOTE_REPORTING False Wether to use a central remote collector or not.
REMOTE_CSP_OBSERVER_URL '' The URL of the remote collector instance. Must be the path to the csp_observer app, as defined in urls.py. Example: http://example.com/csp
CLIENTUI_VISIBILITY always Choose if the client popup should always be visible (always) or only if a problem has been detected (minimized)
RULE_UPDATE_FILE https://raw.githubusercontent.com/flxn/csp-observer-data/master/rules.json The path to the file that contains the global rule database
RULE_UPDATE_INTERVAL 21600 The minimum number of seconds before a new rule update is allowed
VOLUNTARY_DATA_SHARING_URL https://csp-observer-reports.flxn.de The URL that the unknown report data of the data sharing is sent to.

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-csp-observer-1.0.2.tar.gz (260.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_csp_observer-1.0.2-py3-none-any.whl (272.2 kB view details)

Uploaded Python 3

File details

Details for the file django-csp-observer-1.0.2.tar.gz.

File metadata

  • Download URL: django-csp-observer-1.0.2.tar.gz
  • Upload date:
  • Size: 260.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.9

File hashes

Hashes for django-csp-observer-1.0.2.tar.gz
Algorithm Hash digest
SHA256 e4575f8750425eda6900a98d5a334545d43fcb0515d8aead4cab2f55148ed0e2
MD5 0f5ea2b4a9da59b0626d57ee58d298fe
BLAKE2b-256 9c81992c6337b9251f72bd45eda579565fbd9cf502ffc8e81731ce88d3762317

See more details on using hashes here.

File details

Details for the file django_csp_observer-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: django_csp_observer-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 272.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.6.9

File hashes

Hashes for django_csp_observer-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c0e5d69f4a875a247c4a195c4824af554f8584e2571ba04e118c2fed3fde07ad
MD5 a909a58cd7c3aae97a701583964a750b
BLAKE2b-256 1861c58a82539b8ffe5a0d1cc71ae2a2261422c27c9214664d381de2ad7640bc

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