【问题标题】:Rails / Heroku - How to anti-virus scan uploaded file?Rails / Heroku - 如何防病毒扫描上传的文件?
【发布时间】:2012-03-27 06:50:39
【问题描述】:

如何对上传的文件进行病毒、木马等扫描?

只是想阻止一些用户上传一些讨厌的东西。

我正在使用 Heroku 和 Amazon S3。

【问题讨论】:

  • this post有一些建议,那个人也在用Heroku。

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


【解决方案1】:

Check out this

它支持 REST/JSON 防病毒网络服务。

【讨论】:

  • 值得吗?我只是认为黑客会使用 scanii 在线扫描仪测试文件,如果通过,然后将其上传到网站。 ¨¨
【解决方案2】:

对于问同样问题的路人:

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

【讨论】:

  • 如何在Rails应用程序中整合这个?
【解决方案3】:

我们最近创建了CarrierWave::AttachmentScanner,以便将病毒和恶意软件扫描轻松集成到 Rails 和 CarrierWave 中。

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

如果文件与已知签名匹配,那么它将引发CarrierWave:: IntegrityError

【讨论】:

    【解决方案4】:

    开源:ClamAVClamby

    1. 安装 ClamAV:

      ma​​cOS

      brew install clamav
      

      Ubuntu

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

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

    【讨论】:

    • ClamAV 看起来是一个不错的解决方案。但是文件必须完整上传才能扫描,这不是问题吗?像这样,潜在的病毒已经在服务器的硬盘上。对吗?
    • @fuuman 不知道除了使用第三方服务之外你还能怎么做。但仅仅因为需要上传文件才能对其进行扫描,并不意味着它正在被立即访问或调用。在我们公司,他们被隔离,直到通过包括 ClamAV 在内的各种检查。如果您真的很谨慎,您可以先将它们上传到一个单独的、访问受限的服务器,然后在它们被清除后将它们添加到您的主服务器堆栈。
    【解决方案5】:

    您可以参考我关于在 Kubernetes 上运行 ClamAV(使用 Clamby gem)防病毒作为服务以及在您的 RoR 应用程序中使用它的 DRY 实现的博客文章:

    https://www.shebanglabs.io/rails-antivirus-clamby-clamav/

    此外,您可以选择您喜欢的部分并将其与您选择的堆栈组合。

    【讨论】:

      【解决方案6】:

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

      validates :file, antivirus: true 
      

      到您要扫描的模型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-13
        • 1970-01-01
        • 2010-10-02
        • 2010-10-13
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多