Railsは、railsログから機密パラメーターをフィルター処理するためのfilter_parameter_loggingを提供します。
JSONP APIを使用している場合は、URLに機密情報が含まれている可能性があります。ログからリクエストURLをフィルタリングする方法もありますか?
Railsは、railsログから機密パラメーターをフィルター処理するためのfilter_parameter_loggingを提供します。
JSONP APIを使用している場合は、URLに機密情報が含まれている可能性があります。ログからリクエストURLをフィルタリングする方法もありますか?
注:ここでの答えは、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
必要な部分を置き換えるには、正規表現で少し遊ぶ必要があることに注意してください。
残念ながら、これはRails 3では機能しなくなりました。パス(クエリパラメーターを含む)は、Rack::Requestを継承するActionDispatch::Requestから取得されます。イニシャライザにスローできる関連するモンキーパッチは次のとおりです。
class ActionDispatch::Request
def fullpath
@fullpath ||= super.gsub(/secret=[^&]+/, 'secret=[FILTERED]')
end
end
[^&]
パラメータに文字や数字以外の文字が含まれている可能性があるため、正規表現での使用に切り替えました。