Skip to content

Commit

Permalink
add initial content-security-policy
Browse files Browse the repository at this point in the history
* use django-csp
* add csp for dev to find issues
  • Loading branch information
goapunk committed Apr 25, 2023
1 parent a9bd17c commit 3d90957
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 8 deletions.
1 change: 1 addition & 0 deletions digitalstrategie/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.locale.LocaleMiddleware',
'csp.middleware.CSPMiddleware',
'wagtail.contrib.redirects.middleware.RedirectMiddleware',
)

Expand Down
45 changes: 37 additions & 8 deletions digitalstrategie/settings/dev.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,43 @@

if os.getenv("DATABASE") == "postgresql":
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'django',
'USER': 'django',
'PASSWORD': '',
'HOST': '',
'PORT': '5557',
'OPTIONS': {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'django',
'USER': 'django',
'PASSWORD': '',
'HOST': '',
'PORT': '5557',
'OPTIONS': {
},
}
}

# CSP for development (not very strict)
CSP_DEFAULT_SRC = ["'self'"]
# unsafe-eval only for testing
CSP_SCRIPT_SRC = ["'unsafe-eval'"]
CSP_SCRIPT_SRC_ATTR = ["'none'"]
# wagtail (and webpack during dev) requires unsafe-inline
CSP_SCRIPT_SRC_ELEM = ["'self'", "berlin.de",
"www.berlin.de", "'unsafe-inline'"]
CSP_IMG_SRC = ["'self'", "berlin.de", "www.berlin.de", "www.gravatar.com"]
CSP_OBJECT_SRC = ["'none'"]
CSP_MEDIA_SRC = ["'self'"]
CSP_FRAME_SRC = ["'self'", "youtube.com",
"www.youtube.com", "vimeo.com", "www.vimeo.com"]
CSP_FONT_SRC = ["'self'", "berlin.de", "www.berlin.de"]
CSP_CONNECT_SRC = ["'self'", "releases.wagtail.io"]
CSP_STYLE_SRC = ["'none'"]
# wagtail userbar requires unsafe-inline for wagtail <= 4.1
CSP_STYLE_SRC_ATTR = ["'self'", "'unsafe-inline'"]
# wagtail admin vendor.js requires unsafe-inline
CSP_STYLE_SRC_ELEM = ["'self'", "berlin.de",
"www.berlin.de", "'unsafe-inline'"]
CSP_BASE_URI = ["'self'"]
CSP_CHILD_SRC = ["'none'"]
CSP_FRAME_ANCESTORS = ["'self'"]
CSP_FORM_ACTION = ["'self'"]
CSP_MANIFEST_SRC = ["'self'"]
CSP_WORKER_SRC = ["'none'"]
# CSP_UPGRADE_INSECURE_REQUESTS = True
1 change: 1 addition & 0 deletions requirements/base.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
brotli==1.0.9
Django==3.2.18
django-cloudflare-push==0.2.2
django-csp==3.7
django-multiselectfield==0.1.12
django-widget-tweaks==1.4.12
sentry-sdk==1.19.1
Expand Down

0 comments on commit 3d90957

Please sign in to comment.