3

从版本 3 开始,plone.protect提供自动CSRF保护。

默认情况下,Plone 4.3 包括plone.protect 2.0

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

4

2 回答 2

2

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

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

这是我的笔记:

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

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

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

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

结论:

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

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

于 2015-06-09T12:50:54.193 回答
1

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

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

JavaScript 会做几件事:

  1. 将身份验证器令牌添加到发回站点的所有表单
  2. 将身份验证器令牌添加到可能写入数据库的所有管理 url。例如,“编辑”按钮会写入数据库,因为在 Plone 4 中,AT Content Types 在数据库中创建了一个临时对象。此外,它还带有锁定支持。
  3. 将身份验证器令牌添加到所有 ajax 请求。使用类似https://api.jquery.com/ajaxSend/的东西来添加令牌。
于 2015-06-10T13:26:17.077 回答