【发布时间】:2023-03-27 04:42:01
【问题描述】:
Rails 5 提供参数过滤,我在application.rb 中指定了config.filter_parameters += ["my_token"]。
在开发(环境)模式下测试我的应用程序,我看到 my_token 已从日志文件的请求行中正确过滤:
Started GET "/something?my_token=[FILTERED]"
但是,紧随其后的 SQL 日志行仍然包含纯文本形式的参数值(“SELECT stuff FROM things”等,以 my_token 作为参数)。
Rails 5 是否提供了一种从其日志文件的 SQL 部分过滤此原始值的方法?
我还在生产模式下运行了我的应用程序,虽然日志文件更简洁,但它们仍然在 D 类日志行中为生成的 SQL 语句显示未过滤的值。
我没有指定自定义日志设置——除了我的过滤器参数设置之外的所有设置都是默认设置。
我自己的搜索显示没有相关的讨论。也许我错过了什么?
谢谢!
【问题讨论】:
-
理论上你不应该在生产模式下看到 sql 日志。您是否更改了默认生产配置?
-
我遇到了同样的问题。我猜答案可能是(a)任何敏感的东西(比如密码)都应该在存储之前加密/散列,(b)你应该把你的日志文件和你的数据库一样敏感。不过,我仍然希望能够过滤 SQL 查询参数!
标签: ruby-on-rails ruby-on-rails-5