上传文件的病毒扫描

I’m currently looking into integrating Discourse with our existing web systems to provide a discussion forum for our site’s users. One of the requirements of our platform is that all uploaded files are checked for viruses prior to being made available for anyone to download.

Looking through the documentation, I can’t see any way to configure Discourse to use a virus scanner on uploaded files. Am I missing something?

Discourse doesn’t have such feature. You’d have to build a plugin to scan uploaded files for viruses.

Has anyone built such a plugin?

Not that I am aware of.

I am also interested in this question.

Locally - this is clamav, calling ruby gem.

And GitHub - ifad/clammit: ClamAV HTTP filter

Found a suitable plugin?

As far as I know there is no virus scanning plugin for Discourse.

自去年以来,这个话题有什么更新吗?

这将是企业托管的一项额外月费。您是否希望添加此功能?如果是,请联系我们的支持渠道进行咨询。

我们组织也遇到了同样的问题,但我们没有权限进行企业级托管。有人告知我们,如果找不到解决方案,该站点将被关闭。
请问文件在 Discourse 中上传到了哪些位置?在 AWS 上部署的实例能否利用防病毒软件实时扫描这些位置?

如果上传扫描是必需的,且无法使用企业版托管,您可以考虑其他托管方案,或禁用危险文件类型的上传。

您是否需要对 JPG 和 PNG 文件进行病毒扫描?

这是可行的,但如果您使用 CDCK 托管服务,则无法自行控制该功能。

如果上传文件位于您控制的 S3 存储桶中,您是否可以使用 AWS 的杀毒服务来满足安全要求?

你最后提出的问题,本质上也正是我想问的。那么,/uploads 文件夹(即上传文件的目录结构所在位置)是位于 [持久化的?] Docker 镜像内部,还是通过卷挂载的?我有点忘了 Docker 的工作机制,也不清楚 Discourse 具体是如何存储上传文件的。我的系统管理员正在考虑安装 ClamAv,但我们尚不明确:是只需在我们的 EC2 实例上安装即可,还是需要在 Docker 镜像本身中安装(例如通过编辑镜像以添加 ClamAv 并重新构建镜像)?

默认情况下,它位于一个映射到主机上 /var/discourse/shared/standalone 的卷中。您还可以使用在 使用对象存储服务进行上传(S3 及克隆) 中解释的配置,将上传文件发送至对象存储服务。

那么,在实例的操作系统中安装 ClamAv 并扫描 /var/discourse/shared/ 下的内容是否就足够了?不需要在 Docker 镜像本身中更深层地安装它,对吗?

默认安装中的确切文件夹路径是 /var/discourse/shared/standalone/uploads/default/。该路径在容器中挂载为卷,所有上传文件均保存于此。

如果这符合您所需的合规要求,请继续使用。

@Falco 抱歉我有点困惑,您确认 ClamAV 不需要安装在 Docker 镜像中,只需安装在 EC2 操作系统上即可吗?(我有一段时间没使用 Docker 了……)

它在主机上应该可以正常运行。

明白了,谢谢 @Falco。有人告诉我,这将让我们在进行安全审查时更加安心……

我们有一个官方防病毒插件,仅在我们的托管服务下向企业客户提供。配置和部署相当复杂,我们不打算在 meta 上公开提供支持。

不过,作为托管企业客户,我们确实提供此项服务。