0

上下文

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 资产。因此,网站和应用程序变得无法使用。恢复文件可解决此问题。目前尚不清楚其他文件是否丢失。

到目前为止

  • 仅当域面向公众且可访问时才会发生(当防火墙关闭仅为我服务时,当在不同的非索引域(例如由 Google)上不会发生这种情况时,不会发生这种情况。)
  • 到目前为止,robots.txt 设置为“Disallow: /”时不会发生这种情况 - 可能需要更长的时间才能证明这实际上可以防止问题发生,但问题没有发生需要很长时间。
  • 使用 wget 进行初始手动爬网不会触发此问题 - 尽管已将其测试为出现此问题的域上当前内容的新递归获取
    • 我没有重新抓取,或请求过时的 url,所以可能无法绘制完整的图片
  • 有关对此调查的更详细背景,请参阅: https ://www.odoo.com/forum/help-1/question/updated-how-do-i-prevent-website-common-asset-files-from-经常找不到-ioerror-errno-2-no-such-file-or-directory-92982

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

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

  • 或者这是一个不能很好地处理旧/过期或未知网址请求的错误?

  • 或以上的组合?

  • 甚至可能是恶意活动?

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

任何有助于正确识别和解决此问题的帮助将不胜感激。

4

3 回答 3

1

万一有人仍然需要解决这个问题,odoo 代码中存在一个错误,该错误已在以后的版本中修复。这里的信息:

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

于 2017-05-19T10:27:53.147 回答
0

There are two types of backups, one of them includes the database besides the dump into the .zip file.

This happens to me when I just do a backup & restore using the dump variant.

That way excludes the file store, so one could have ir.attachment records referring to inexistent files in the file store.

于 2016-06-18T00:08:13.247 回答
0

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

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

于 2015-11-30T10:19:42.963 回答