|
8 | 8 |
|
9 | 9 | import sentry_sdk
|
10 | 10 | from corsheaders.defaults import default_headers as default_cors_headers
|
| 11 | +from csp.constants import SELF |
11 | 12 | from log_outgoing_requests.formatters import HttpFormatter
|
12 | 13 | from notifications_api_common.settings import * # noqa
|
13 | 14 |
|
|
124 | 125 | # External applications.
|
125 | 126 | "axes",
|
126 | 127 | "django_filters",
|
| 128 | + "csp", |
127 | 129 | "corsheaders",
|
128 | 130 | "vng_api_common",
|
129 | 131 | "notifications_api_common",
|
|
162 | 164 | "django.contrib.messages.middleware.MessageMiddleware",
|
163 | 165 | "django.middleware.clickjacking.XFrameOptionsMiddleware",
|
164 | 166 | "axes.middleware.AxesMiddleware",
|
| 167 | + "csp.contrib.rate_limiting.RateLimitedCSPMiddleware", |
165 | 168 | ]
|
166 | 169 |
|
167 | 170 | ROOT_URLCONF = f"{PROJECT_DIRNAME}.urls"
|
|
421 | 424 | CSRF_COOKIE_SECURE = IS_HTTPS
|
422 | 425 | CSRF_COOKIE_SAMESITE = config("CSRF_COOKIE_SAMESITE", "Strict")
|
423 | 426 |
|
| 427 | +if IS_HTTPS: |
| 428 | + SECURE_HSTS_SECONDS = 31536000 |
| 429 | + |
424 | 430 | X_FRAME_OPTIONS = "DENY"
|
425 | 431 |
|
426 | 432 | #
|
@@ -672,3 +678,27 @@ def init_sentry(before_send: Callable | None = None):
|
672 | 678 | LOG_OUTGOING_REQUESTS_MAX_AGE = config(
|
673 | 679 | "LOG_OUTGOING_REQUESTS_MAX_AGE", default=7
|
674 | 680 | ) # number of days
|
| 681 | + |
| 682 | + |
| 683 | +# |
| 684 | +# Django CSP settings |
| 685 | +# |
| 686 | + |
| 687 | +CSP_DEFAULT_SRC = [ |
| 688 | + SELF, |
| 689 | +] + config("CSP_EXTRA_DEFAULT_SRC", default=[], split=True) |
| 690 | + |
| 691 | + |
| 692 | +CONTENT_SECURITY_POLICY = { |
| 693 | + "EXCLUDE_URL_PREFIXES": ["/api/", "/admin"], |
| 694 | + "DIRECTIVES": { |
| 695 | + "base-uri": SELF, |
| 696 | + "default-src": CSP_DEFAULT_SRC, |
| 697 | + "style-src": CSP_DEFAULT_SRC, |
| 698 | + "script-src": CSP_DEFAULT_SRC, |
| 699 | + "img-src": CSP_DEFAULT_SRC, |
| 700 | + "frame-ancestors": None, |
| 701 | + "frame-src": [SELF], |
| 702 | + "upgrade-insecure-requests": False, |
| 703 | + }, |
| 704 | +} |
0 commit comments