我可以在 Plone 4.3 上使用 plone.protect 3.0 吗?

Can I use plone.protect 3.0 with Plone 4.3?

从版本 3 开始,plone.protect provides automatic CSRF 保护。

Plone 4.3 默认包含 plone.protect 2.0

我可以只升级以开始使用 Plone 4.3 中的此功能吗?

我只有一点点经验,玩过 plone.protect 3.x 和 Plone 4.3.2,但没什么大不了的。

我也安装了很多插件,所以我不能说 Plone 本身或插件是否有问题。

这是我的笔记:

是的,您可以启用它,但您的安装将停止工作。 所以...不,你不能:-)

首先 plone.protect.aut 3.0 默认处理每个 POST/GET 请求。 例如Session handling是一个写请求,所以你必须在任何地方手动修复它!

第二次在注解(IAnnotation)中写入数据,默认也是保护的,所以必须找到每个使用注解的地方(例如Portlets存储)并修复它。

如果您的测试环境状况良好 :-) 您会得到它的工作,但开箱即用的 Plone 4.3 尚未准备好使用它。

结论:

主要问题是 GET 请求,最终导致数据库更改。 我现在这是错误的,但是 Plone 4.3 and/or 主要是插件有这种行为。

您最终将通过白名单扩展 plone.protect.auto 功能。

我写了所有 auto-csrf 的东西。我建议不要在 Plone 4 中使用它,除非你想投入大量时间。

修复在 Plone 5 上使用它的最简单方法是添加一些 javascript,它会在登录时自动为您保护几乎所有内容。这不会处理 ZMI,然后它取决于 javascript 上班。

JavaScript 会做几件事:

  1. 将身份验证器令牌添加到 post 返回站点的所有表单
  2. 将身份验证器令牌添加到所有可能写入数据库的管理 url。例如,"Edit" 按钮会写入数据库,因为在 Plone 4 中,AT Content Types 在数据库中创建了一个临时对象。此外,它还支持锁定写入。
  3. 向所有 ajax 请求添加身份验证器令牌。使用类似 https://api.jquery.com/ajaxSend/ 的方式添加令牌。