Skip to content

Commit 3553412

Browse files
committed
Fix CSPMiddlewareAlwaysGenerateNonce
Must read nonce as string to properly initialize request.csp_nonce.
1 parent 970be26 commit 3553412

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

csp/middleware.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def process_request(self, request: HttpRequest) -> None:
7272
nonce = partial(self._make_nonce, request)
7373
setattr(request, "csp_nonce", CheckableLazyObject(nonce))
7474
if self.always_generate_nonce:
75-
self._make_nonce(request)
75+
str(getattr(request, "csp_nonce"))
7676

7777
def process_response(self, request: HttpRequest, response: HttpResponseBase) -> HttpResponseBase:
7878
# Check for debug view

csp/tests/test_middleware.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -297,10 +297,11 @@ def test_csp_always_nonce_middleware_has_nonce() -> None:
297297
request = rf.get("/")
298298
mw_agn = CSPMiddlewareAlwaysGenerateNonce(response())
299299
mw_agn.process_request(request)
300+
nonce = getattr(request, "csp_nonce")
301+
assert bool(nonce) is True
300302
resp = HttpResponse()
301303
mw_agn.process_response(request, resp)
302-
nonce = str(getattr(request, "csp_nonce"))
303-
assert nonce in resp[HEADER]
304+
assert str(nonce) in resp[HEADER]
304305

305306

306307
def test_csp_always_nonce_middleware_nonce_regenerated_on_new_request() -> None:
@@ -326,7 +327,8 @@ def test_csp_always_nonce_middleware_access_after_middleware_is_ok() -> None:
326327
request = rf.get("/")
327328
mw_agn = CSPMiddlewareAlwaysGenerateNonce(response())
328329
mw_agn.process_request(request)
329-
nonce = str(getattr(request, "csp_nonce"))
330+
nonce = getattr(request, "csp_nonce")
331+
assert bool(nonce) is True
330332
mw_agn.process_response(request, HttpResponse())
331-
assert bool(getattr(request, "csp_nonce", False)) is True
333+
assert bool(nonce) is True
332334
assert str(getattr(request, "csp_nonce")) == nonce

0 commit comments

Comments
 (0)