Rails: фильтрация конфиденциальных данных в параметре JSON из журналов

Я запускаю Rails 3 и пытаюсь отфильтровать конфиденциальную информацию из наших журналов, которые представляют собой капли JSON, которые передаются как параметры сообщения. Например, Создание пользователя может принимать параметр сообщения с именем user со строковым значением, которое является объектом JSON. Один из ключей в объекте JSON - пароль , и мы хотим отфильтровать его из наших журналов. Лучшим способом, который я нашел для этого, было добавление блока к нашим параметрам filter_params, например так:

keys_to_filter = ['password', 'password_confirmation']
config.filter_parameters << lambda do |k,v|
  if v.is_a? String
    keys_to_filter.each do |key|
      # Match "key":"", or "key":""}, allowing for whitespace
      v.sub!(/("\s*#{key}\s*")\s*:\s*"[^,\}]*"\s*([,\}])/, "\\1:\"[FILTERED]\"\\2")
    end
  end
end

Это добавляет блок в filter_params, что вызывает ошибку, описанную в другом вопросе: Rails: ParameterFilter :: compiled_filter пытается дублировать символ

Похоже, что передавать блок в filter_parameters небезопасно, поэтому мне интересно, есть ли другой способ решить эту проблему.

10
задан Community 23 May 2017 в 10:32
поделиться