22
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsでアップロードされたファイルをウイルススキャン

Last updated at Posted at 2014-06-16

Railsでアップロードされたファイルを自動的にウイルススキャンできるミドルウェアを昔作ったサービスで作ったのを思い出し、Gem化してみた。

インストールは簡単。

Gemfile
gem 'rack-secure-upload'

application.rbに以下を追加するだけ。

config/application.rb
module MyApp
  class Application < Rails::Application
    config.middleware.insert_before ActionDispatch::ParamsParser, Rack::SecureUpload::Middleware, :avast
  end 
end

現在はAvastとFsecureに対応(別途インストールしておく必要がある)。
Avastは無料なので気軽に試せるがEC2のmicroインスタンスだと貧弱すぎてスキャンにものすごい時間がかかる。

簡単なSampleアプリケーションを以下に作ってみた。

試しにeicarをアップロードしてみると、

Screen Shot 2014-06-16 at 11.19.14 PM.png

406を返す。

例外を出すこともできる。

Screen Shot 2014-06-16 at 9.26.04 PM.png

後はこれを別のミドルウェアでrescueしてエラー画面出すなり、nginxでインターセプトしてエラー画面出すなりするとOK。

本来はIPSなどで検出すべきだけど、そこまで本格的なものは要らない人のためには重宝しそう!
まあ、ディレクトリ監視でウイルススキャン走らせてても良いのだけれど、常駐させる負荷はなくなるかな!?

22
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?