hello-world
webエンジニアのメモ。とりあえずやってみる。

[rails]特定パラメータをフィルタリングしてアプリケーションログに残さないようにする

公開日時

Ruby2.1.4, Rails4.1.7で確認。

Railsではlogディレクトリ以下にアプリケーションログが残るようになっており、デフォルトだとセキュリティの面からパラメータ名がpasswordのものはフィルタリングされるようになっています。

Parameters: {"user_name"=>"sample","password"=>"[FILTERED]"}

↑のように[FILTERED]で内容を隠してくれます。

この設定は config/initializers/filter_parameter_logging.rb で行われています。

# config/initializers/filter_parameter_logging.rb

Rails.application.config.filter_parameters += [:password]

ここにパラメータを追加することで、フィルタ対象を増やすことができます。

例えばjsからbase64形式で画像データを送ってもらう場合、フィルタをしておかないとログにbase64の文字情報がひたすら記録されてしまい、他のログを追うのが大変になってしまいます。

そこで

# base64画像のパラメータ名がimage_base64で送られてくる想定

Rails.application.config.filter_parameters += [:password, :image_base64]

と書いておけば以下のようにフィルタリングされるためログがすっきりします。

Parameters: {"image_base64"=>"[FILTERED]"}

参考


Related #Rails

[rails]ELB使用時にヘルスチェック用のアクションを作成する

ELBにrailsアプリをぶら下げる場合、railsアプリが落ちたらELBから外れてもらいたいです。

[rails]carrierwaveで保存した画像のurlを取得する

carrierwave 0.10.0 で確認 imageカラムにcarrierwaveで保存した画像を保存している場合、デフォルトのままだとだとurlメソッドを実行してもpublic以下のパスのみで http://~ が設定されていません。