【问题标题】:How do I disable sending traceback to remote hosts?如何禁用向远程主机发送回溯?
【发布时间】:2014-02-14 18:41:33
【问题描述】:

当 Twisted 出现错误时,如何防止 Twisted 向浏览器发送回溯?它一直在暴露文件路径和代码。

【问题讨论】:

  • 不要在调试模式下运行生产应用程序,也不要在扭曲的情况下运行它。
  • 要重新解释@ThiefMaster 的评论,解决方案是禁用调试模式或任何所谓的!
  • 重新解释@mhlester,可能有一个叫做调试模式的东西,你应该把它关掉或其他什么!
  • 更正式地说,@CodyPiersall 说:模式的属性集 M 包含一个在语义上等同于“调试”的元素。确保该属性的值在语义上等同于“False”

标签: python security twisted traceback twisted.web


【解决方案1】:

几乎每个提供人类可读内容的服务器框架都可以选择提供追溯(用于开发)或不提供(用于生产)。

在 Twisted 中,它被称为 displayTracebacks,它被记录为 twisted.web.server.Site 的成员。你配置它的方式与你在 Twisted 中配置其他任何东西的方式相同。 (对应的单字选项,例如,对于命令行标志,是notracebacks。)

如果您想知道为什么它默认为 True,您可能想阅读 2003 feature request that added this flag in the first place 上 Glyph 的基本原理:

不,这应该默认开启,因为当你 正在使用您通常正在开发的默认值。系统 管理员可以通过添加将其设为站点本地默认值 到 sitecustomize.py 或类似的东西。

(正如 11 年更明智的 Glyph 版本在评论中指出的那样,在应用程序中设置它可能比使用站点本地默认值更好。但基本思想是相同的。将其设置为 @ 987654326@ 在任何级别,你都会得到你所追求的行为。)

【讨论】:

  • 我可以让它输出回溯到 stdout 但不在 HTTP 回复中吗?
  • @AustinBurk:我认为没有任何方法可以专门将回溯输出到stdout,但默认情况下,它们已经转到配置日志记录的任何位置。 (您是否阅读过 Twisted 中有关日志记录和配置的基本教程?)
  • @AustinBurk:所以现在,它在日志和输出页面中。如果您禁用displayTracebacks,它将在日志中而不是其他任何地方。这就是你想要的吗?
  • 实际上不要将其设为“站点本地”,只需将其设置在您的应用程序中即可:-)。
  • 互联网平等地永久归档我们所有的错误。最好不要说什么;-)
猜你喜欢
  • 2011-03-03
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 2021-12-20
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多