Безопасность Rails: фильтрация логов

Илья • 25 сентября 2007 г.

Если в вашем приложении используются такие важные данные как номера кредитных карт или пользовательские пароли, то вам стоит фильтровать свои логи, в которые эта секретная информация просачивается.

Сделать это очень просто. Достаточно вставить следующую строку в ApplicationController:


class ApplicationController < ActionController::Base
  filter_parameter_logging :password
end

В метод filter_parameter_logging через запятую передаются названия всех параметров, которые вы не хотите отображать в логах. Вы можете вызвать этот метод в любом контроллере, где должна совершаться фильтрация логов.

Важный нюанс: метод filter_parameter_logging использует регэкспы, для сравнения параметров, так что код, приведённый выше, будет работать для всех параметров, в названии которых содержится слово password.

Вот как выглядят логи с отфильтрованным параметром :password:

Processing AccountsController#login (for 127.0.0.1 at 2007-09-25 03:56:02) [POST]
  Session ID: 66e0c98d03cc80433cecfe3cf76f65aa
  Parameters: {"login"=>"vasya", "password"=> "[FILTERED]", 
               "password_confirmation"=> "[FILTERED]"}

1 комментарий:

  1. Денис Лозко:

    http://railscasts.com/episodes/9

Извините, но комментарии для этой статьи уже закрыты.