导出的报告附件(我用合并页面视图进行了测试)未被标记为安全,尽管文件具有私有 ACL,这会阻止下载,因为短 URL 指向一个未签名的链接。运行 uploads:secure_upload_analyse_and_update rake 任务后,它被正确标记为安全(还有 3 个其他帖子/5 个上传也被发现,但我无法确定它们是什么)。
您能澄清一下您说的“导出的报告附件”是什么意思?截图?
这很奇怪,如果我在一个安全的媒体网站上尝试这样做,上传会被正确标记为安全。您能像这样显示上传记录,然后再试一次吗?
#<Upload:0x0000556ae80c5208
id: 532362,
user_id: 1436,
original_filename: "consolidated-page-views-220318-031153-54.zip",
filesize: 480,
width: nil,
height: nil,
url: "//blah.zip",
created_at: Fri, 18 Mar 2022 03:11:53.556489000 UTC +00:00,
updated_at: Fri, 18 Mar 2022 03:11:53.842038000 UTC +00:00,
sha1: "12345",
origin: nil,
retain_hours: nil,
extension: "zip",
thumbnail_width: nil,
thumbnail_height: nil,
etag: "12345",
secure: true,
access_control_post_id: 377702,
original_sha1: "12345",
verification_status: 1,
animated: nil,
security_last_changed_at: Fri, 18 Mar 2022 03:11:53.836860000 UTC +00:00,
security_last_changed_reason: "login is required | source: post creator"
>
您的网站需要登录吗?
无需登录
#<Upload:0x000055646d495a30
id: 62749,
user_id: 1,
original_filename: "web-crawlers-220318-032906-26.zip",
filesize: 3017,
width: nil,
height: nil,
url:
"//[nope].storage.googleapis.com/original/3X/6/7/679649f9c6d33541cf5f5d2c48c2ef514bde36a0.zip",
created_at: Fri, 18 Mar 2022 03:29:07.114686000 UTC +00:00,
updated_at: Fri, 18 Mar 2022 03:29:07.328592000 UTC +00:00,
sha1: "679649f9c6d33541cf5f5d2c48c2ef514bde36a0",
origin: nil,
retain_hours: nil,
extension: "zip",
thumbnail_width: nil,
thumbnail_height: nil,
etag: "54f0df6d95a84d04877aa20f238c3b1e",
secure: false,
access_control_post_id: 214238,
original_sha1: "5cc4f437505ae3a07bdd27bbe2653462de31db6d",
verification_status: 1,
animated: nil,
security_last_changed_at: Fri, 18 Mar 2022 03:29:07.112534000 UTC +00:00,
security_last_changed_reason: "no checks satisfied | source: upload creator">
我们的 secure_media 网站设置仅针对 AWS S3 进行验证。这可能是问题所在。
奇怪的部分是:
security_last_changed_reason: "no checks satisfied | source: upload creator"
对我来说,在我的站点设置中,login_required false 和 secure_media true,当我导出报告并将其通过 PM 发送给我时,我会得到这个:
security_last_changed_reason: "access control post dictates security | source: post creator"
这很有意义,因为 PM 的帖子创建者附加了上传文件,并且在那时它应该被设置为 secure: true。您的上传记录上有一个 access_control_post_id,但它似乎没有正确工作?
如果您执行 Post.find(214238).with_secure_media? 会发生什么?
我认为这不应该影响它,这只会影响 ACL,我认为。
这是否不适用于所有可能安全的上传?考虑到在私有主题和其他 PM 中发布的帖子没有这个问题,我对此不确定。
=> true
嗯……不确定这里发生了什么
奇怪的是,如果我在 PostCreator(由导出作业调用)中添加一个断点,我一开始会得到一个与你相似的上传结果:
secure: false,
access_control_post_id: 67115,
...
security_last_changed_at: Fri, 18 Mar 2022 04:14:42.292485000 UTC +00:00,
security_last_changed_reason: "no checks satisfied | source: upload creator"
但随后,一旦发生 PostCreator 对安全状态的更新,一切就都正常了:
secure: true,
access_control_post_id: 67115,
...
security_last_changed_at: Fri, 18 Mar 2022 04:14:55.645303000 UTC +00:00,
security_last_changed_reason: "access control post dictates security | source: post creator"
Discourse.store.external? 对你返回 true 吗?
def update_uploads_secure_status(source:)
if Discourse.store.external?
Jobs.enqueue(:update_post_uploads_secure_status, post_id: self.id, source: source)
end
end
它确实有,我看不到任何正在运行或计划中的 sidekiq 作业,所以我认为它要么失败了,要么从未运行过。
我感到很困惑
您的 /logs 页面有什么可能与此相关吗?这似乎是唯一可能导致这种情况发生的方式,那就是 update_post_uploads_secure_status 这个 sidekiq 作业失败或出错。
出现了一些错误,但都与 CleanUpUploads 作业有关。经过进一步调查,似乎该作业从未运行(过去 2 天没有失败的作业)。
抱歉,我无法重现此问题,因此目前我们对此无能为力。
