コンテキスト:
Odoo v9 docker イメージが NginX リバース プロキシの背後にインストールされ、公開されているベア ドメイン (mydomain.com など) にインストールされ、Web サイト ビルダーがインストールされ、他の構成やアプリはインストールされません。
問題:
定期的に重要なファイルが失われます:
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'
このファイルは、Web サイトが機能するためのすべての一般的な js アセットを含む、自動生成された圧縮された JavaScript ファイルです。したがって、サイトとアプリは使用できなくなります。ファイルを復元すると、この問題が修正されます。他のファイルが行方不明になるかどうかは不明です。
これまでのところ:
- これは、ドメインが公に公開され、アクセス可能な場合にのみ発生します (私だけにサービスを提供するためにファイアウォールがオフになっている場合、これは、別のインデックス化されていない (Google などによる) ドメインでは発生しません)。
- これまでのところ、robots.txt が「Disallow: /」に設定されている場合、これは発生しません。これが実際に問題を防止していることを証明するには、もう少し時間がかかる場合がありますが、問題が発生しないまでには長い時間がかかります。
- wget を使用した最初の手動クロールでは、この問題は発生しません。ただし、これは、この問題が発生するドメインの現在のコンテンツを新たに再帰的に取得するものとしてテストされています。
- 再クロールを行っていないか、古い URL をリクエストしていないため、全体像を把握できない可能性があります
これは奇妙なことに、ドメイン名が www.domain.tld ではなく domain.tld であるためですか?
それとも、これはボット/クローラーの癖で、トリガーすべきではない何かをトリガーしていますか?
それとも、古い/期限切れの、または不明な URL のリクエストをうまく処理できないバグですか?
または上記の組み合わせ?
それとも悪意のある活動でさえありますか?
現時点では、外部の匿名の (ログインしていない) ユーザーが odoo ソフトウェア内で壊滅的なファイル削除を引き起こす可能性があることは、非常に懸念されるセキュリティ上の問題であると思われます。これまでにテストされたすべての変数を考慮すると、これが問題の原因のように見えます。もしそうなら、それは重大なセキュリティ上の欠陥です。v9 にアップグレードした他の誰かがこの問題を経験しましたか? これは、Google などによって既に確立され、インデックスに登録されているサイトでのみ発生する可能性があります。
この問題を適切に特定して解決するための助けをいただければ幸いです。