【问题标题】:Disable Sinatra standard output禁用 Sinatra 标准输出
【发布时间】:2015-05-27 09:34:25
【问题描述】:

出于安全原因,我不希望 Sinatra 在标准输出中打印其请求的每个 URL,我已尝试按照 this answer 中的建议使用 set :logging, false,使用:

class SweetAppName< Sinatra::Base
    set :show_exceptions, false
    set :environment, :production
    set :logging, false

但是,当我使用 rackup 和 Thin 运行应用程序时,我仍然看到请求记录到终端:

127.0.0.1 - - [26/May/2015:09:32:34 -0700] “GET /not-a-real-url HTTP/1.0”404 - 0.0452

如何关闭这些功能?

【问题讨论】:

  • 如果您将敏感数据作为 URL 的一部分提交,您应该知道 HTTP 数据包可以被拦截。然后,攻击者将能够从 HTTP 数据包中读取 URL。您可能应该使用 HTTPS,其中包括 URL 在内的整个数据包都已加密。
  • 我使用的是 HTTPS,但是当 NGINX 向上游传递请求时,它会以 HTTP 请求的形式进行。

标签: ruby sinatra


【解决方案1】:

如果您使用rackup 启动您的应用程序,Rack will add some middleware, including logging。您可以通过使用安静选项(-q--quiet)到rackup 来防止这种情况发生,即从命令行:

$ rackup -q

如果需要,您可以在 config.ru 中包含此选项,这样您就不必记住每次启动应用程序时都要输入它。 first line that starts with #\ is parsed as options,所以你可以有这样的config.ru

#\ --quiet

# other middleware etc...
run SweetAppName

如果您使用经典的 Sinatra 应用程序样式,则需要添加 set :logging, false 行,否则 Sinatra 将添加自己的日志记录。使用模块化样式(就像您在问题中使用的那样)此设置默认为false,因此您不需要它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-24
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    相关资源
    最近更新 更多