Railsでの秘匿情報はログからもしっかり見られないようにしよう
こんにちは。
今回はセキュリティのお話です。
難しいですよね、セキュリティ。。。
いろんな手段に対していろんな対策があるわけですが、今回は意外と忘れがちなログについて確認します。
見られてまずいものにはフィルターをかけよう
Railsで開発をしていると、パラメータはログにどんどん表示されていると思います。
ここが意外とセキュリティの穴になったりするようです。
何かと言うと、 ログに情報が丸出し なんです。
確かに一般ユーザから見られるようなものではありませんが、表示されているとどこで何があるか分かりません。
秘匿情報にはなるべくフィルターをかけておくことをお勧めします。
きっと見たことあると思うのですが、わざわざ設定しなくてもRailsはログのフィルター機能が使えるようになっています。
//略
password => [FILTERD]
//略
イメージこんな感じ(伝われ)で、 password
というキーに対応する情報は [FILTERD]
として表示されるようにデフォルトで設定されています。
今まで対象のキーは password
だけだったのですが、最新バージョンの Rails ではデフォルトで設定されているキーが増えたような話も聞きました🧐
そして、user_info
というユーザに関する何らかの秘匿情報を保存するカラムがあったとします。
これが画面からパラメーターとして送られてくると。。。?
//略
user_info => confidential information
//略
はい、丸見えです😭
なんてことにならないように、対策をしましょうねというお話でした!!
んで、どうすれば良いの?
rails new
した際にはデフォルトで、 config/initializers/filter_parameter_logging.rb
というファイルが作成されます。
この中身をいじることでフィルター対象を変更できます!!
# Be sure to restart your server when you modify this file.
# Configure sensitive parameters which will be filtered from the log file.
Rails.application.config.filter_parameters += [:password]
デフォルトがこちらです。
ご覧の通り password
だけが対象になっていることが分かります。
これを、
Rails.application.config.filter_parameters += [:password, :user_info]
にすればOKです!!
再起動をお忘れなく🙌
セキュリティに気をつけて良いプログラミングライフを過ごしましょう😁
Discussion