gpt4 book ai didi

ruby-on-rails - 如何从Rails 5日志的SQL部分过滤敏感参数?

转载 作者:行者123 更新时间:2023-12-03 20:53:59 25 4
gpt4 key购买 nike

Rails 5提供了参数过滤功能,我在config.filter_parameters += ["my_token"]中指定了application.rb

在开发(环境)模式下测试我的应用程序,我发现my_token已从日志文件的请求行中正确过滤:

Started GET "/something?my_token=[FILTERED]"

但是,紧随其后的SQL日志行仍以纯文本形式包含参数的值(“ <从东西中选择内容”,等等,以my_token作为参数)。

Rails 5是否提供一种从其日志文件的SQL部分过滤此原始值的方法?

我还以生产模式运行了我的应用程序,尽管日志文件更加简洁,但是对于生成的SQL语句,它们仍然显示D型日志行中未过滤的值。

我未指定任何自定义日志设置-默认情况下,除过滤器参数设置外的所有设置都是其他设置。

我自己的搜索没有发现与此相关的讨论。也许我想念什么?

谢谢!

最佳答案

如果要完全禁用生产的SQL日志,可以将config/environments/production.rb中的日志级别更改为:info

  config.log_level = :info


如果只想对一些敏感数据的查询静音日志记录,则可以使用 Rails.logger.silence。在提供的块持续时间内,它将使日志静音。因此,它可以避免将特定的SQL查询写入日志。

用法:

def index
Rails.logger.silence do
# load method is used to force query execution inside the block
@items = Item.all.load
end
end


请记住,查询是延迟执行的,因此,如果查询是在块外执行的,则无论如何都会记录它。以下示例将失败:

def index
Rails.logger.silence do
# The query will be executed outside the block when @items is first used in the view
@items = Item.all
end
end

关于ruby-on-rails - 如何从Rails 5日志的SQL部分过滤敏感参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41054494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com