基于zodb的重载zope会话实现。

dm.zope.session的Python项目详细描述


功能

dm.zope.session 支持以下功能。 相应的配置变量在括号中指定。

< dl >
最大会话生存期( 会话最大生存期

此功能允许限制会话的最大生存期。 出于安全原因,它可能很有趣:应该 攻击者能够劫持会话,他应该 能够在有限的时间内使用。

在zope的会话架构中,会话id由 所谓的浏览器管理器。它在用饼干 在浏览器和服务器之间传递会话ID。 为了有效,必须组合最大会话生存期 会话ID的生存期有限;否则, 攻击者可以使用已知会话ID劫持后续操作 会话。在现代zope版本中,会话id默认为 存储在(浏览器)会话cookie中。在此设置中,攻击者 可以劫持福勒在用户终止其 浏览器会话。

最大会话生存期通过 配置变量 session_max_lifetime_min 。 它指定以分钟为单位的最大生存期。不积极的 值将停用该功能。

会话不活动超时( 会话超时\u分钟

会话在不用于about时被删除 会话超时\u分钟 分钟。如果 会话超时\u分钟 如果为非正值,则该功能将被停用。

超时功能未精确实现: 会话可以在指定的 不活动,可能比指定的 超时。这有两个原因:

< Buff行情>
  1. 为了避免zodb膨胀,存储会话访问时间 分辨率有限(通常约为会话超时的1/8)。
  2. 会话停用通过定期清理执行 过程。在下一次运行此过程之前不会发生任何事情。

非活动超时是 由products.transience实现的会话,因为 它通常将会话存储在(珍贵的)ram中。 dm.zope.会话 会话通常存储在 早期释放资源的重要性要小得多。 但是,如果在会话中存储敏感信息, 出于安全原因,您可能仍要使用此功能: 它迫使潜在的攻击者使被劫持的会话保持活动状态 以便继续利用。

会话访问时间分辨率( 会话访问时间分辨率u min
这控制会话访问时间 是否更新:如果上次更新是 比访问时间分辨率更近。 会话访问时间分辨率min 指定访问 时间分辨率(分钟)。有效访问时间 分辨率是该分辨率的最小值,约为1/8 忽略非正值的会话超时。 如果两个分辨率都为非正,则访问时间不是 维护。
会话目标号( 会话目标号
定期清理尝试将会话数保持在以下 通过删除最旧的会话,会话目标号 。 会话目标数的非正值将被停用 功能。
会话最大数( 会话最大数

会话最大数量 限制会话对象的数量。 异常 dm.zope.session.maximalSessionNumberExceeded 将在超过限制时提升。不积极的 值将停用该功能。

此选项可用于限制设置的线程 拒绝服务攻击

定期会话清理( 清理周期秒
定期清理进程删除其最大生存期的会话 或达到非活动超时。它还会删除最早的 会话将会话号保持在下面 会话目标编号。 清除周期秒 指定 此过程的时间(秒)。如果是非阳性 值,改为10。
事件

出于自定义目的,会通知某些事件。他们 接口都在dm.zope.session.interfaces中定义。 所有事件都是带有会话的"对象事件" 或者会话容器作为事件对象。

< dl >
isessioncreatedevent
在创建新会话对象时通知。 可用于将信息从请求传输到 会话,例如可能有助于检测的信息 DoS攻击
i最大会话数
在达到最大会话数时通知。 可用于实现要删除的自定义策略 在这种情况下的会话,以便让操作成功。 但是,请注意,删除相同的 并发请求的会话导致无法解析 冲突(只有一个请求会成功);因此 建议您随机选择要删除的会话。
ISessionCleanupEvent
在每轮清理期间通知。 可用于实现自定义清理策略,例如。 检查是否存在DOS攻击或执行"每个用户一个会话"策略。 请注意,此事件在外部的单独线程中通知 典型的zope请求上下文;只有很少的"服务" 可用。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
打开OrientDB数据库时发生java错误   java Hibernate合并函数偶尔会导致主键冲突   java如何在SourceTransferndexit将msg放入MQ   JavaEclipse不正确地导入项目   Java中的数据结构,带有删除节点后所有节点的操作   java创建zip存档时,什么构成重复条目   java如何计算所有值并比较每个对象?   java Threadflipbegin在Google Pixel 3上被阻止55秒   java Eclipse Hibernate:未找到适合jdbc的驱动程序:mysql://localhost:3306/hibernatedb   java Quartz计划程序未运行   java如何从junit扩展向@Test返回值?   java忽略搜索字段中的大小写   java如何从图库中选取图像,裁剪并保存在数据分区中   java CST/CDT时区更改问题   url从Java读取Twitter页面   java是否要在每个列表项中打开WebView单击?   比较输入值的Java布尔逻辑初学者   如何在服务器端使用java从客户端的HTTP POST请求接收和解析JSON对象   javascript在一个get请求中,如何启动程序,然后使用另一个get请求停止它?