the*_*gal 10 security json ruby-on-rails actiondispatch ruby-on-rails-3
我正在运行Rails 3并尝试从我们的日志中过滤敏感信息,这些日志是作为post参数传递的JSON blob.例如,用户创建可能会使用user作为JSON对象的字符串值调用post param .JSON对象中的一个键是password,我们想要从日志中过滤掉它.我发现这样做的最好方法是在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":"<filter_out>", or "key":"<filter_out>"}, allowing for whitespace
v.sub!(/("\s*#{key}\s*")\s*:\s*"[^,\}]*"\s*([,\}])/, "\\1:\"[FILTERED]\"\\2")
end
end
end
Run Code Online (Sandbox Code Playgroud)
这会向filter_params添加一个块,这会导致另一个问题中描述的错误:Rails:ParameterFilter :: compiled_filter尝试重复符号
将块传递给filter_parameters似乎是不安全的,所以我想知道是否有另一种方法可以解决这个问题.
Rails 测试套件filter_parameters中有一个传递块的示例:
config.filter_parameters += [ :foo, 'bar', lambda { |key, value|
value = value.reverse if key =~ /baz/
}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2107 次 |
| 最近记录: |