Środowisko Rails przechowuje w logach wiele danych. M.in to co przesyłamy w żądaniach.

Problem pojawia się gdy przesyłamy login i hasło (np. podczas logowania lub rejestracji). Osoba która uzyska dostęp do logów, mogłaby z nich “wyciągnąć” te newralgiczne dane. Aby temu zapobiec, należy “przysłonić” wrzucanie do logów tych pól z formularzy które są niebezpieczne.

Aby to zrobić należy skorzystać z metody:

  filter_parameter_logging

Która po podaniu parametrów usunie je, zanim trafią do loga. Aby w całej naszej aplikacji przysłonić tworzenie logów zawierających hasła wystarczy w kontrolerze aplikacji (ApplicationController) dodać następująca linijkę:

  filter_parameter_logging :password

Dzięki temu, mając jakiekolwiek pola zawierające słowo password, ich zawartość zostanie zamieniona na [FILTERED]. Nie ma to znaczenia czy są w hashu zawierającym hasha:

params[:test][:deeper][:password]
params[:test][:deeper][:password_confirmation]

Czy też “na wierzchu”:

params[:password]
params[:password_confirmation]

W każdym z tych przypadków, hasła nie zostaną zapisane w logach.