Rails / Heroku - 如何反病毒扫描上传的文件?

时间:2012-03-09 20:26:54

标签: ruby-on-rails ruby ruby-on-rails-3 heroku amazon

如何扫描上传的文件以查找病毒,特洛伊木马等?

考虑阻止一些用户上传一些讨厌的东西。

我正在使用Heroku和Amazon S3。

6 个答案:

答案 0 :(得分:3)

check out This

它支持REST / JSON防病毒Web服务

这是帖子 - https://stackoverflow.com/questions/4104985/antivirus-scanning-service

答案 1 :(得分:1)

对于路人问同样的问题:

Metascan。它是免费的,有一个简单的API!

答案 2 :(得分:0)

对于将来接近此问题的任何人,我们最近创建了CarrierWave::AttachmentScanner,以便轻松地将病毒和恶意软件扫描整合到Rails和CarrierWave中。

该插件基本上使用carrierwave挂钩到文件上传中,并将请求发送到JSON / REST Web服务以检查文件。

如果文件与已知签名匹配,则会引发CarrierWave:: IntegrityError

答案 3 :(得分:0)

开源:ClamAVClamby

  1. 安装ClamAV:

    macOS

    brew install clamav
    

    Ubuntu

    sudo apt-get install clamav clamav-daemon -y
    
  2. 在Rails应用程序中
  3. 设置after_create回调以扫描新文件:

    after_create :scan_for_viruses
    
    def scan_for_viruses
      raise "Virus discovered!" if Clamby.virus?( self.path )
    end
    

答案 4 :(得分:0)

您可以参考我的博客文章,其中介绍了如何在Kubernetes上运行ClamAV(使用Clamby gem)作为服务以及DRY实施以在RoR应用程序中使用它的服务:

Why does compiling a class containing static nested classes create a new .class file named "EnclosingClass$1"?

此外,您只需选择所需的零件并将其与您选择的零件组合即可。

答案 5 :(得分:0)

您可以使用clamav buildpack向heroku-app添加病毒扫描功能。 然后在您的Rails应用程序中使用ratonvirus gem将clamav病毒扫描程序与您的Rails应用程序连接。 在rails中,您只需要添加

validates :file, antivirus: true 

要扫描的模型。