Crawler/Bot活动触发关键网站文件的删除-Odoo v9中的哪些代码可能导致此删除



上下文

Odoo v9 docker镜像安装在NginX反向代理后面,在面向公众的裸域(例如mydomain.com)上,安装了网站生成器,而不是其他配置或应用程序。

问题

关键文件会定期丢失:

2015-10-30 15:28:28,266 1 INFO db-test werkzeug: 172.17.0.25 - - [30/Oct/2015 15:28:28] "GET /web/content/407-17599c5/website.assets_frontend.js HTTP/1.0" 200 -
2015-10-30 15:28:28,281 1 INFO db-test openerp.addons.base.ir.ir_attachment: _read_file reading /var/lib/odoo/filestore/db-test/e6/e69e06808b908fc0d85ebfea58fbc7df3788e72e
Traceback (most recent call last):
 File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_attachment.py", line 151, in _file_read
 r = open(full_path,'rb').read().encode('base64')
IOError: [Errno 2] No such file or directory: u'/var/lib/odoo/filestore/db-test/e6/e69e06808b908fc0d85ebfea58fbc7df3788e72e'

这个文件是一个自动生成的压缩javascript文件,包含网站运行所需的所有常见js资产。因此,该网站和应用程序变得不可用。还原文件可修复此问题。目前尚不清楚其他文件是否丢失。

到目前为止

  • 只有当域面向公众并可访问时,才会发生这种情况(当被隔离只为我服务时,这不会发生在在另一个非索引(例如谷歌)域上发生。)
  • 到目前为止,robots.txt设置为"不允许:/"-可能需要更长的时间才能证明这是真的阻止了这个问题,但这个问题需要很长一段时间才能解决已经发生了
  • 使用wget的初始手动爬网不会触发这个问题——尽管这是作为一个新的递归获取进行测试的发生此问题的域上的当前内容
    • 我还没有重新搜索,也没有请求过期的URL,所以可能无法描绘全貌
  • 了解更多关于对此进行调查,请参阅:https://www.odoo.com/forum/help-1/question/updated-how-do-i-prevent-website-common-asset-files-from-constantly-not-being-found-ioerror-errno-2-no-such-file-or-directory-92982

  • 这奇怪是因为域名是domain.tld而不是www.domain.tld?

  • 或者这是一个机器人/爬虫的怪癖,正在触发它不应该?

  • 或者这是一个不处理旧的/过期的请求的错误,或者未知url好吗?

  • 还是以上的组合?

  • 甚至可能是恶意活动?

在这一点上,外部匿名(未登录)用户可能会触发odoo软件内部的灾难性文件删除,这似乎是一个非常令人担忧的安全问题。考虑到目前为止测试的所有变量,这看起来很像问题的根源。如果是这样,那将是一个重大的安全漏洞。其他升级到v9的人遇到过这个问题吗?这很可能只会发生在已经建立并由谷歌等索引的网站上

如能为正确识别和解决此问题提供任何帮助,我们将不胜感激。

如果有人仍然需要解决这个问题,odoo代码中有一个错误在稍后的版本中得到了修复。此处信息:

https://github.com/odoo/odoo/issues/9495

由于某些原因,此记录已从位置/var/lib/odoo/filestore/db-test/e6/data_dir/filestore/database_name的路径中删除(当前不存在)

我有相同的错误,所以我只是从**ir_attachment**表中删除了那个记录。这不是一种正确的方法,但问题已解决

有两种类型的备份,其中一种包括除了转储到.zip文件之外的数据库。

当我只是做一个备份&使用dump变体进行恢复。

这种方式排除了文件存储,因此可以有ir.attachment记录引用文件存储中不存在的文件。

最新更新