typo3 - 来自extension_builder的安全警告: action is publicly accessible

标签 typo3

我使用扩展构建器创建了一个扩展。

保存时我收到此消息:

对象已更新。请注意,除非您实现访问检查,否则此操作是可公开访问的。请参阅https://docs.typo3.org/typo3cms/extensions/extension_builder/User/Index.html

如何解决这个问题?是的,我阅读了该页面,但没有任何有用的提示。

最佳答案

由于问题是如何“解决问题”:没有问题,这是一个警告,您可以将其删除并确保您的请求安全。 (就像在另一个答案中一样。) 页面上的“提示”其实很简单。 “问题”是指用户能够操纵 url 并使服务器执行不需要的操作。

这是一个例子: 您拥有页面的用户列表,您可以打开他们的公共(public)资料以获取更多信息:

https://yourdomain.com/list/?tx_ext_plugin['action']=show&tx_ext_plugin['userId']=41.

因此,如果我想制造一些麻烦,我可以将操作“显示”更改为“删除”,这样我就可以从数据库中删除可怜的用户“41”。这很糟糕。

https://yourdomain.com/list/?tx_ext_plugin['action']=delete&tx_ext_plugin['userId']=41.

因此,由于这是您的业务逻辑,typo3 没有为此提供开箱即用的解决方案。这就是为什么扩展构建器发出的警告说,您需要采取措施防止误用。

关于如何实现更好的安全性,这里有一些关于访问控制的想法以及在您的操作中要实现的一些想法:

1) 有限元

  • 您可以将操作分成不同的插件。因此,如果您有公共(public)列表操作,则无法将其修改为负责删除操作的插件。这怎么可能? TYPO3 将查找数据库中的页面记录。并将渲染它,如果页面上有带有签名“tx_ext_plugin”的插件,那么它将获取发送的参数。在这种情况下,您可以将不同的插件添加到不同的页面,因此更改攻击者的签名将无济于事,因为:

    1. 如果插件未注册删除操作,TYPO3 将 抛出异常。
    2. 如果您尝试更改整个签名,该页面将无法识别该插件。
  • 您可以将编辑/删除插件添加到用户必须登录的页面。您甚至可以管理多个用户组。就像普通用户只能编辑其个人资料一样,但高级用户可以进行进一步的更改。您可以在流体中使用 View 助手 IfHasRole可以为定义的用户组显示模板的一部分。 (还有一个 ifAuthenticated ViewHelper)

  • 您可以以扩展程序“femanager”为例。有一个 Controller “EditController”,涵盖“更新”和“删除”等操作。例如,在执行更新操作之前,会检查登录用户是否与要更改的记录具有相同的用户 ID。如果您有一个复杂的示例,您还可以检查用户组。

2) 是

它实际上和前端几乎一样。

  • 但不是在页面设置中分配的插件/用户组。您可以使用不同的挂载点,这样BE用户就看不到不允许编辑/删除的文件夹。

  • 您也有这两个用于 BE 的 ViewHelper。名称为:f:be:security.ifAuthenticatedf:be:security:ifHasRole 。然而,ifAuthenticated 也适用于 FE,在 BE 上下文中它没有意义。

  • 您还可以识别 BE 用户的 ID 和用户组,并且可以在运行操作之前进行自己的检查。

  • 您还可以打开/关闭特定 BE 组的模块。

+1:与任何操作无关,只是列出它。还可以通过 BE 中的列表模式编辑记录来允许/禁止 BE 用户字段。

关于typo3 - 来自extension_builder的安全警告: action is publicly accessible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48349861/

相关文章:

php - TYPO3 扩展库 : CSRF-FormProtection fails for non-admin user in frontend

typo3 - 如何在 Typo3 v8 上设置自己的带有子域的 CDN?

rest - 使用 Extbase (Typo3) 实现 REST 服务

url - TYPO3 9.5 LTS - 自动(重新)生成 URL 段?

mysql - 百分比通配符不会在完美匹配时返回

typo3 - 如何在typo3 v9.x中异步构建typo3后端页面树?

output - 流体动力 TYPO3 FLUX Fluidcontent - 前端没有输出?

database - 如何在 Typo3 6.1.5 中使用 PHP 在我的扩展中从 tt_content 呈现内容对象

caching - 用 locallang.xlf 翻译 Extbase 扩展,但没有任何反应?

typo3 - 将 url 渲染为链接,url 本身作为 typoscript 中的链接文本