filter_parametersがフィルターしてくれる範囲

Railsでは、filter_parametersという設定をすることが出来ます。
ググれば具体的にどういう処理をしてくれているのか、他の方が色々書いてくれます。
今回は、それらについて、誤解がないように書いておきます。

環境

この記事は、以下のバージョンを使って書いています。

  • Ruby ... 2.4.1
  • Ruby on Rails ... 5.1.4

リクエストパラメータをフィルターする

filter_parametersに指定された条件にマッチした場合は、パラメータの値を[FILTERED]としてログに出力します。
独自でフィルターしたい値があれば積極的に使っていくと良いでしょう。
パスワード、決済関連の情報などといったパラメータに関しては特にそうでしょう。

SQLの値をフィルターする

RAILS_ENVがproductionであろうと、フィルターされることはありません。
リクエストパラメータのうちフィルターした値に関しては、DBに直接保存することはやめましょう。
やろうと思えば出来なくもないですが、これから開発するアプリケーションであれば、そんな事するよりかは設計を変更し、暗号化した値を保存するようにしましょう。

機密情報平ダメ。ゼッタイ。

ログレベルを変えれば、SQLのログを出さないようにすることも出来ますが、そういうことをするのは最終手段にしましょう。
ログを解析しようと思っても情報がロストしてしまって、悲しいことになりますからね。

最後に

filter_parametersにフィルターしたい値を設定しておけば大丈夫という考えは、リクエストパラメータだけにしておきましょう。
それ以外のログ(SQLなど)では出力されてしまうので、それを見越して設計・開発を行うようにしていきましょう。

決済関連の情報など、内部で不正利用されたら事件ですからね。

コメント

このブログの人気の投稿

ElasticIPを複数利用する時の注意

タスクの実行結果をwhenで指定するならcheck_modeつける

EC2にNameをつける