Ś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.