对django中内容安全策略的nonce支持。
django-csp-nonce的Python项目详细描述
dcn是一个内容安全策略nonce注入支持系统,用于 Django和CSP。
它提供即时创建和部署。一次
安装后,DCN将生成唯一的nonce
对于每个请求(一个用于script-src,另一个用于
style-src指令)将nonce附加到
csp头,然后通过
django上下文处理器。
dcn不受Django-CSP的影响,可以运行
独立于通过的任何csp插入方法
django中间件。
披露
- 此代码尚未通过第三方安全审核。
- 我已经用pypy-5.4.1在本地成功地测试了这个。土传病 已经确认这不适用于他们的版本。
安装
pip install django-csp-nonce
将dcn添加到MIDDLEWARE_CLASSES:
MIDDLEWARE_CLASSES=([...]'csp_nonce.middleware.CSPNonceMiddleware',# Make sure you put it *above* django-csp if you're using it[...])
将dcn添加到context_processors:
TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[...],'APP_DIRS':True,'OPTIONS':{'context_processors':['csp_nonce.context_processors.nonce',[...]],},},]
最后,将dcn指令添加到设置:
CSP_NONCE_SCRIPT=False# True if you want to use itCSP_NONCE_STYLE=False# True if you want to use itCSP_FLAG_STRICT=False# True to include strict-dynamic in CSP
用法
DCN替你照顾这一代人。当你工作的时候 在模板上,从上下文中拉入特定的nonce:
<script type="text/javascript" {{script_nonce}}> ... </script> <style {{style_nonce}}> ... </style>
依赖关系
- Django
已知问题
- settings.DEBUG=True 上的即时同步中断
重要更改
- 1.0
- 超出测试版!
- pynacl不再是依赖关系。(向前推进的目的是 与google app engine等环境保持兼容 不支持非python扩展。)
运行测试
使用tox对多个版本的python运行测试 您已经安装了django的多个版本。请确保 至少对Python2.7和Python3.5运行测试。
virtualenv venv . ./venv/bin/activate pip install tox tox