Rails 2.3.11 から 3.0.10 へのアップグレードに取り組んでおり、 の内容を変換するApplicationController
のに問題がありfilter_parameter_logging
ます。:referrer
特定のパラメーターの両方をフィルター処理し、タグなどの値に表示される場合はそれらもフィルター処理したいと考えています。
通常のパラメーターをフィルターで除外できますapplication.rb
config.filter_parameters += [:password, :oauth, ...]
しかし、私が問題を抱えているのは、filter_parameter_logging でも渡すブロックです。また、URL のように見えるすべての値のパラメータを除外するため、次のようなものhttp://example.com?password=foobar&oauth=123foo&page=2
は としてログに記録されhttp://example.com?password=[FILTERED]&oauth=[FILTERED]&page=2
ます。上記のURLのように、レールが指定されたパラメータをフィルタリングし、他の値からそれらのパラメータのみをフィルタリングする方法が必要です。
filter_parameter_logging での表示は次のとおりです。
FILTER_WORDS = %{password oauth email ...}
FILTER_WORDS_REGEX = /#{FILTER_WORDS.join("|")}/i
#Captures param in $1 (would also match things like old_password, new_password), and value in $2
FILTER_WORDS_GSUB_REGEX = /((?:#{FILTER_WORDS.join("|")})[^\/?]*?)(?:=|%3D).*?(&|%26|$)/i
filter_parameter_logging(*FILTER_WORDS) do |k,v|
begin
# Bail immediately if we can
next unless v =~ FILTER_WORDS_REGEX && (v.index("=") || v.index("%3D"))
#Filters out values for params that match
v.gsub!(FILTER_WORDS_GSUB_REGEX) do
"#{$1}=[FILTERED]#{$2}"
end
rescue Exception => e
logger.error e
end
end
config.filter_parameters
in を使用してこの方法で Rails フィルターを作成する方法はありapplication.rb
ますか? Rails 3 でフィルタリングをカスタマイズする方法に関する適切なドキュメントが見つからないようです。