torchbox / torchbox/django-pattern-library
CSP issues
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 423
- Forks
- 53
- PR merge metrics
- No merged PRs in 30d
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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue does not name files, tests, or an entry point. Start by reproducing the Pattern Library under the reported Content Security Policy and compare the violations with the requested compliant behavior; done means it works without the temporary middleware workaround.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- django, python
- Domain
- security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100