A Django app that evaluates CSP reports to identify malicious activity.
Project description
CSP Observer
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
- In
settings.pyadd "csp_observer" to yourINSTALLED_APPS:INSTALLED_APPS = [ ... 'csp_observer', ] - Also in
settings.pyadd the following entry toMIDDLEWARE:
Please make sure that it is the last entry in the middlewares, otherwise another installed middleware could interfere with the operation of CSP Observer.MIDDLEWARE = [ ... 'csp_observer.middleware.CspReportMiddleware', ] - Include the url configuration in your
urls.py:
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 tofrom django.urls import path, include urlpatterns = [ ... path('csp/', include('csp_observer.urls')), ]path('cspobserver/', ...), the admin dashboard will now be accessible at/cspobserver/admin. - Run
python manage.py migrateto create the necessary database tables. - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4575f8750425eda6900a98d5a334545d43fcb0515d8aead4cab2f55148ed0e2
|
|
| MD5 |
0f5ea2b4a9da59b0626d57ee58d298fe
|
|
| BLAKE2b-256 |
9c81992c6337b9251f72bd45eda579565fbd9cf502ffc8e81731ce88d3762317
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0e5d69f4a875a247c4a195c4824af554f8584e2571ba04e118c2fed3fde07ad
|
|
| MD5 |
a909a58cd7c3aae97a701583964a750b
|
|
| BLAKE2b-256 |
1861c58a82539b8ffe5a0d1cc71ae2a2261422c27c9214664d381de2ad7640bc
|