Plone会话安全发现 - 任何想法?

时间:2012-09-07 07:58:54

标签: security session cookies plone

最近对Plone 4.01实例的审核:

  1. 尽可能加密存储在会话cookie中的用户名,或者使用一次性会话ID来识别用户(在服务器端)而不是用户名。

    • 用户名使用base64编码存储在应用程序会话cookie中,可以轻松解码。
  2. 用户退出时立即使会话ID失效。

    • 当退出PLONE应用程序时,应用程序将删除cookie,但不会使用户会话ID无效。还有人指出,第二次使用该应用程序进行身份验证并未使之前的会话cookie无效。
  3. 如果可能的话,我们不希望在堆栈中添加其他产品来解决这些问题。

    顺便说一下,我们确实安装了Beaker,这被用作公共帐户,作为网站电子商务领域的一部分,而内容管理员/作者正在使用标准的Plone登录/安全机制,这正在吸引审计结果...也许Beaker可以重复用于内容作者?不确定这是不是一个好主意......

    顺便说一句,我们也很快就会更新到Plone 4.2。

1 个答案:

答案 0 :(得分:2)

如果您担心cookie安全性,则应始终使用SSL加密。例如,页面输出中包含相同的用户名,因此它包含在cookie中的事实也不是信息泄露。

Cookie使用具有有限时间跨度的加密哈希值,默认值为12小时,之后将不再接受cookie。

您可以降低此超时时间:

  1. 转到您的plone实例的ZMI

  2. 找到acl_users文件夹,然后找到session插件:

    Session plugin in the ZMI

  3. 转到Properties标签(最右边的标签)

  4. 将“Cookie有效期超时(以秒为单位)”属性更改为新值。

  5. 注意它下面的“刷新间隔(以秒为单位,-1表示禁用刷新)”值;只要签名的cookie早于刷新间隔,就会生成一个新的cookie,以刷新cookie的生命周期。因此,默认情况下,每小时一次,您将获得一个有效期为12小时的新cookie。

    您不希望Cookie有效期超时低于刷新间隔。如果您将这些值设置得非常低,您可能需要考虑使用定期的AJAX“ping”请求,以便在用户仍在使用该网站时保持cookie新鲜。

    事实上,plone.session已经包含为您实施此ping的工具。只需在控制面板中安装“会话刷新支持”插件即可启用它(“网站设置”>“附加组件”add-ons icon>选中“会话刷新支持3.5”,点击“激活”) 。这将为您安装javascript库,它将每5分钟ping一次服务器,前提是当前页面已加载时有一些鼠标或键盘活动。