django-cookieless 1.1
pip install django-cookieless
上次发布日期:
django cookie free sessions可选decorator
- 您所在的位置:
- Python中文网 >
- pypi >
- django-cookieless库 >
- 正文
django-cookieless的Python项目详细描述
django cookieless
Ed Crewe-2019年5月
概述
这个包为视图提供了一个会话实现和decorator类 允许表单通过发布会话来维护状态而不使用cookies 表单之间或通过URL的ID。
Django需要cookies来维护会话,因此需要授权。
此软件包专为匿名用户会话维护而设计,无需cookies。
警告:这有安全问题,因为无法使用 无会话cookie的csrf保护,与通过url或表单帖子传递的令牌保持单独的令牌。
然而,在公共网站上使用表单的情况下,由于隐私立法的原因,设置cookies是不可取的( ),因为从技术上讲,匿名用户不需要回复表单。 因此,如果使用,可能需要向用户请求设置cookies的权限。
因此,这个包被设计成允许django在不使用cookies的情况下传递多页表单。
为了改善安全隐患,可以在配置中设置允许域的白名单。
也可以将使用限制为特定的URL。
作为另一项安全措施,可以关闭对get请求的处理,这样加密的会话id就不会出现在任何url中。
请注意:不建议在没有上述限制的情况下使用此软件包。
为了同时使用基于cookie和无cookie会话,有一个 保存无Cookieless会话时,自定义无Cookieless_信号(发送方=请求,已创建)和"无Cookie"标志。
两者都适合连接自定义代码来处理这些不太安全的会话。
包提供了一个decorator实用程序,用于关闭特定视图的cookie设置(它还设置csrf_exempt标志)。
该软件包还处理在浏览器中禁用cookies的匿名用户的会话处理情况。
您可以修饰视图以防止它们设置cookie,同时仍保留会话的使用。 通常这是在核心应用程序的url.py中最容易完成的…
从Cookieless.decorators导入无cookie
>>> urlpatterns = patterns('', ... url(r'^view_function/(\d{1,6})$', no_cookies(view_function)), ... url(r'^view_class/(\d{1,6})$', no_cookies(ViewClass.as_view())), ...)
请注意,如果许多浏览器选项卡以无Cookieless方式打开到一个站点,它们将各自维护一个完全独立的会话,因为 如果没有cookies,会话将绑定到从访问的页面发布的会话,而不是整个客户端。
如果这不是所需的行为,那么可以通过使用url重写使打开其他windows的链接通过会话来减少这种行为。 当然,这也意味着会话可能也可以在浏览器之间共享。
安装
要安装,请通过pip或其他构建工具添加包,例如bin/pip install django cookieless
然后替换中间件设置中的标准会话:
>>> MIDDLEWARE = ( ... 'django.middleware.gzip.GZipMiddleware', ... 'django.middleware.common.CommonMiddleware', ... 'django.middleware.transaction.TransactionMiddleware', ... # 'django.contrib.sessions.middleware.SessionMiddleware', ... 'cookieless.middleware.CookielessSessionMiddleware', ...)
以下设置控制其行为:
(请参见示例设置文件)
- 自动重写响应,而不是使用手动方式<;%session\u token%>;<;%session\u url%>;
无cookieless['rewrite']=真
- 重写url以添加无cookies修饰视图的会话id(如果为false,则所有页面导航都必须通过表单发布)
无Cookieless['use_get']=真
- 使用客户端IP和用户代理加密会话密钥,添加某种CSRF保护,因为标准CSRF必须在不使用cookies的情况下禁用。
无Cookieless['client_id']=真
- 如果填充了此列表,则仅允许白名单中的主机投递到服务器。因此,该站点所服务的任何域都应添加到列表中。但是,如果没有找到referer,则会话被重置,这将在页面重新加载时发生。这有助于防止XSS攻击。
无Cookieless['hosts']=['localhost',]
- 更进一步的安全选项是不将基于cookie的会话作为无cookie的会话查找和持久化,因为这些会话可能绑定到用户或其他数据。相反,会创建新的会话来绑定到无Cookieless数据。这降低了无Cookieless允许捕获用户会话的风险,从而降低了权限提升攻击。
无cookieless['no_cookie_persist']=真
- 进一步的安全选项,仅保留用于访问特定URL的会话
无cookieless['url_specific']=真
- 删除为无cookie修饰的url找到的所有cookie(可以是由其他url设置的cookie)
无Cookieless['删除Cookie']=假
测试
测试套件设置了一个简单的应用程序来手动测试cookies,并对其运行功能测试。
要运行测试,您可能需要从src(或您的分支)安装:
bin/pip安装-e git+https://github.com/edcrewe/django cookieless egg=django cookieless
然后通过:
bin/django-admin.py或manage.py test cookieless.tests–settings=cookieless.tests.settings
(由于pip的问题,包已从命名空间包更改 当它执行nspkg.pth文件时,不安装用于运行测试的"初始化"
无烹饪/装饰.py
因为django测试浏览器有一些特定于会话实现的模拟, 如果直接用它来对付无烹饪,它就不能工作,所以要阻止它破坏其他的测试 无cookieless检查django admin命令是否已使用'test'参数调用并设置settings.testing=true,如果是,则不使用任何cookie装饰。
要覆盖此自动禁用设置,只需将testing=false添加到您的测试设置中。
推荐PyPI第三方库
silva.app.redirectlink
提供一个链接,该链接执行到已移动Silva内容的永久HTTP重定向
mil
用于科学gui的qt构建块的集合。
odoo12-addon-mail-activity-board
添加活动板
pymain
主功能的简化接口。
django-queued-storage
Django的排队远程存储。
ecell4-base
用于复杂、异构和多尺度系统(如cell)建模、仿真和分析的软件平台。e-cell以多算法、多时间尺度和多空间表示为中心特征。
Zwiki
一个强大的,用户友好的wiki引擎,基于zope 2平台。
pymysqlblinker
mysql binlog到闪烁信号
timetracker
极简时间追踪器。
pyBuildWeb
构建Web帮助程序服务。
pip-compile
没有项目描述
cs-khipu
Unofficial Khipu Services Python SDK.
opper
轻松显示命令行选项
vilas
gromacs中导向分子模拟的自动工具
clipy-dl
YouTube视频下载程序
导 航 栏
项目 链接
标 签
许可证: BSD许可证(BSD 3条款)
作者信息:: 暂无