首页 文章

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

提问于
浏览
0

Context

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

Problem

定期关键文件将丢失:

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资源 . 因此,网站和应用程序变得无法使用 . 还原文件可以解决此问题 . 目前还不清楚其他文件是否会丢失 .

So Far

  • 只有当域名面向公众并且可访问时才会发生(当防火墙仅供我使用时,如果在不同的非索引(例如谷歌)域上发生这种情况,则不会发生这种情况 . )

  • 到目前为止,当robots.txt设置为_2470166时不会发生这种情况 - 可能需要更长的时间才能证明这实际上是在阻止这个问题,但对于没有发生的问题,这已经有一段时间了 .

  • 使用wget进行的初始手动爬网不会触发此问题 - 尽管这是作为域上当前内容的新递归获取而测试的,此问题发生

  • 我没有进行重新抓取,或者请求过时的网址,所以可能无法描绘全貌

  • 有关详细调查的详细背景,请参阅: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?

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

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

  • 或以上的组合?

  • 甚至可能是恶意活动?

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

任何帮助正确识别和解决这个问题将不胜感激 .

3 回答

  • 0

    如果还有人需要解决这个问题,那么odoo代码中就会出现一个错误,该错误已在以后的版本中修复 . 信息在这里:

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

  • 1

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

    我有相同的错误,所以我只是从 **ir_attachment** 表中删除该记录 . 这不是一个正确的方法,但 problem solved

  • 0

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

    当我只使用转储变体进行备份和恢复时,就会发生这种情况 .

    这样就排除了文件存储,因此可能会有ir.attachment记录引用文件存储中不存在的文件 .

相关问题