File tree 3 files changed +26
-0
lines changed
3 files changed +26
-0
lines changed Original file line number Diff line number Diff line change 127
127
# Middleware
128
128
MIDDLEWARE = (
129
129
'django.middleware.clickjacking.XFrameOptionsMiddleware' ,
130
+ 'csp.middleware.CSPMiddleware' ,
130
131
'django.middleware.common.CommonMiddleware' ,
131
132
'django.contrib.sessions.middleware.SessionMiddleware' ,
132
133
'nav.web.auth.middleware.AuthenticationMiddleware' ,
270
271
_needs_tls = bool (_websecurity_config .getboolean ('needs_tls' ))
271
272
SESSION_COOKIE_SECURE = _needs_tls
272
273
X_FRAME_OPTIONS = _websecurity_config .get_x_frame_options ()
274
+ CSP_FRAME_ANCESTORS = _websecurity_config .get_frame_ancestors ()
273
275
274
276
# Hack for hackers to use features like debug_toolbar etc.
275
277
# https://code.djangoproject.com/wiki/SplitSettings (Rob Golding's method)
Original file line number Diff line number Diff line change @@ -25,3 +25,26 @@ def get_x_frame_options(self):
25
25
if frames_flag == 'none' :
26
26
return 'DENY'
27
27
return 'SAMEORIGIN'
28
+
29
+ def get_frame_ancestors (self ):
30
+ """Return a list of sources
31
+
32
+ A single 'none' or a string of one or more of self, source-scheme and
33
+ host-scheme are valid. There is currently no validator for host-scheme,
34
+ so source-scheme and host-scheme are both outputted as-is.
35
+
36
+ To be set in django settings and used by the django-csp middleware.
37
+ """
38
+ default = "'self'"
39
+ frames_flag = self .get (self .FRAMES_OPTION ) or self .FRAMES_DEFAULT
40
+ pieces = frames_flag .split ()
41
+ valid_pieces = []
42
+ for piece in pieces :
43
+ if piece == 'none' :
44
+ valid_pieces .append ("'none'" )
45
+ break
46
+ if piece == 'self' :
47
+ valid_pieces .append (default )
48
+ else :
49
+ valid_pieces .append (piece )
50
+ return valid_pieces or [default ]
Original file line number Diff line number Diff line change @@ -23,6 +23,7 @@ dnspython<3.0.0,>=2.1.0
23
23
django-filter>=2
24
24
djangorestframework>=3.12,<3.13
25
25
django-crispy-forms>=1.8,<1.9
26
+ django-csp
26
27
crispy-forms-foundation>=0.7,<0.8
27
28
28
29
# REST framework
You can’t perform that action at this time.
0 commit comments