TYPO3工作区预览不使用表单和HTTP POST数据

时间:2017-02-05 10:09:59

标签: http-post typo3 typo3-6.2.x typo3-7.6.x typo3-8.7.x

#typo3-cms Slack频道中提出了以下问题:

  

我们的客户想要使用工作区功能。多数民众赞成工作。但他无法测试他的表单,因为工作区不支持POST请求。 (POST请求与关键字预览不兼容),是否有人知道如何在工作空间或任何其他变通方法中使用POST方法测试的插件?

1 个答案:

答案 0 :(得分:2)

场景和行为的说明

当工作空间功能被引入TYPO3时,防止执行HTTP POST请求的检查指向2006年的TYPO3 CMS 4.0(请参阅后面的一致Git revision)。

由于工作空间预览链接在不受信任的应用程序上下文中初始化后端用户,因此已使用该检查来阻止执行管理操作 - 现在可以采用不同的方式执行此操作并使用XSRF保护令牌。

处理这些工作空间预览链接也是sprint 2016中安全问题的一部分,旨在进一步消除这方面可能存在的安全副作用(详见TYPO3-CORE-SA-2016-012)。

预览工作区更改有多种可能性:

从工作区模块预览链接

在TYPO3后端工作区模块的顶栏中,预览链接可以发送给没有凭据访问TYPO3后端的其他方。这种机制基本上导致了如上所述的HTTP POST问题。

此行为在系统扩展程序PreviewHook(包括TYPO3 CMS 7)或version(包括TYPO3 CMS 8)中的类workspaces中实现。除了通过有效的用户帐户授予可能的预览器对TYPO3后端的真实和有限访问权限之外,目前还没有简单的方法绕过HTTP POST检查。

Preview link in the workspace module

直接从页面模块预览内容

有权访问TYPO3后端的编辑者应该在页面模块中使用TYPO3的常规预览机制 - 这对于实时版本和工作区更改是相同的。如果在工作区中工作,唯一的区别是,网站前端显示其他工作区相关的小部件来比较更改。

使用此机制,本答案开头提到的HTTP POST问题不会发生,例如表格可以没有任何限制地使用。

Default TYPO3 preview in the page module

如果之前创建工作区预览链接的方法已经使用了相同的浏览器,则会创建一个cookie ADMCMD_prev,它仍会触发预览链接行为,但仍会导致HTTP POST出现问题 - 即使使用常规预览机制,如本节所述。为了避免这种情况,必须在浏览器中手动清除此cookie。

Clear ADMCMD_prev cookie in the browser