-
Notifications
You must be signed in to change notification settings - Fork 51
Open
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is neededuiRelated to the user interface of the pattern libraryRelated to the user interface of the pattern library
Milestone
Description
Whilst in the process of adding a Content Security Policy to a Wagtail site I found that the Pattern Library is not compliant. I raised this issue to request that the Pattern Library be made CSP compliant.
Working on the philosophy that a weak CSP is better than no CSP I have added some custom middleware to get around the issue, please see an example below:
class CSPOverrideMiddleware(MiddlewareMixin):
"""
Custom middleware to override Content Security Policy directives.
Add to MIDDLEWARE list after official django-csp CSPMiddleware.
"""
def process_request(self, request):
prefix = ("/pattern-library")
if request.path_info.startswith(prefix):
# Remove nonce value otherwise 'unsafe-inline' will not work.
request.csp_nonce = None
def process_response(self, request, response):
# Add CSP sources to enable pages to work.
if request.path_info.startswith("/pattern-library"):
response._csp_update = {
"style-src": "'unsafe-inline'",
"script-src": "'unsafe-inline'",
"img-src": "https://via.placeholder.com",
}
return response
Still in the process of testing but adding here to share the general approach for a (hopefully) temporary workaround. Thanks.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is neededuiRelated to the user interface of the pattern libraryRelated to the user interface of the pattern library