3

Railsは、railsログから機密パラメーターをフィルター処理するためのfilter_parameter_loggingを提供します。

JSONP APIを使用している場合は、URLに機密情報が含まれている可能性があります。ログからリクエストURLをフィルタリングする方法もありますか?

4

2 に答える 2

7

:ここでの答えは、Rails 2.x〜>3.0で動作させる方法でした。Rails 3.1以降、を設定config.filter_parametersすると、Railsはクエリ文字列の機密パラメータも除外します。詳細については、このコミットを参照してください。


その場合、 ActionController :: Basecomplete_request_uriでオーバーライドする必要があると思います。これは、ActionController :: Benchmarkingがそのメソッドを呼び出し、次のような行を出力するためです。

Completed in 171ms (View: 35, DB: 7) | 200 OK [http://localhost:3000/]

これを初期化子に入れて、このメソッドをオーバーライドできると思います

class ActionController::Base
  private

  def complete_request_uri
    "#{request.protocol}#{request.host}#{request.request_uri.gsub(/secret=([a-z0-9]+)/i, "secret=[FILTERTED]")}"
  end
end

必要な部分を置き換えるには、正規表現で少し遊ぶ必要があることに注意してください。

于 2010-01-14T15:13:56.947 に答える
2

残念ながら、これはRails 3では機能しなくなりました。パス(クエリパラメーターを含む)は、Rack::Requestを継承するActionDispatch::Requestから取得されます。イニシャライザにスローできる関連するモンキーパッチは次のとおりです。

class ActionDispatch::Request
  def fullpath
    @fullpath ||= super.gsub(/secret=[^&]+/, 'secret=[FILTERED]')
  end
end

[^&]パラメータに文字や数字以外の文字が含まれている可能性があるため、正規表現での使用に切り替えました。

于 2011-03-01T00:57:53.440 に答える