2016-09-25 6 views
0

My Railsアプリケーションは、脆弱性をスキャンしたハッカーから、偽のトラフィックを頻繁に受け取り、/vb/showthread.php%3C/aのようなURLを襲います。これらはログにノイズとして表示され、フィルタリングしたり、何らかの方法で処理したい(たとえば、誰かにスキャンの試みを警告するなど)。ハッキングされたURLリクエストをブロックするレールまたはラックの宝石はありますか?

すでにこれを実行しているRailsやRackの宝石はありますか?同じことをする他のフレームワークにも同様のライブラリがありますか?

+1

10kの担当者は、外部ツールを尋ねるよりも実際によく知っているはずです。 – max

+0

フェア十分...私は決して前にこのような質問をしたことはありません。閉会に投票した。 –

+0

@maxあなたはこの質問について正しいですが、私を叱責するのは、誰かにルールを思い出させるとても親切な方法ではありません。これは、SOコミュニティが不公平であると言うようなコメントのようなものです。 –

答えて

0

を呼び出すことによって、のようなconfigブロック内で、アプリケーションの設定ファイル内のミドルウェアを登録することを確認する必要があります要求抑制、ブロックリスト、要求ログなどの悪質なトラフィックを処理する機能。

0

これが本当にあなたの質問に答えるかどうかはわかりませんが、私はカスタムフィルタが一般的な宝石の代わりに良いと思います。

奇妙な要求を処理するために、私のapplicaton_controllerにフィルタを追加しました。その後、警告を出して何をしたいのですか?

class ApplicationController < .... 
    before_action :filter_hacks #first filter 

private 
    def filter_hacks 
    if request.format.to_s == 'php' 
     #do something: email, save report, anything 
     head(:ok) and return false 
    elsif #add other filters 

    end 
    end 

私はそれが改善される可能性が確信している、しかし、あなたはブロックするようにし、それが起こるとき、何をやりたいの完全な制御を持っています。

0

これはミドルウェアの優れた使用例です。既知の悪いルートのリストを保存し、アプリケーションに渡す前に、リクエストを傍受して処理するロジックを使用できます。私はRails guidesでRackミドルウェアを使用する方法について詳しく説明します。

しかし、それは次のように何かを達成することができる:

class FilterBadRequest 
    BAD_PATHS = [ 
    "/vb/showthread.php%3C/a" 
    ] 

    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    req = Rack::Request.new(env) 

    bad_request = BAD_PATHS.find { |bad_path| req.fullpath ~= bad_path } 

    if bad_request 
     raise ActionController::BadRequest 
    else 
     @app.call(env) 
    end 
    end 
end 

これはActionController::BadRequest例外が発生しますが、あなたはあなたのアプリケーションのコンテキスト内で理にかなっている任意の他リダイレクトまたは行うことができます。あなたはrack-attackミドルウェア宝石は、要求のいずれかの属性に基づいて要求をブロックするのに十分な一般的であり、他の先進を提供config.middleware.use FilterBadRequest

関連する問題