【问题标题】:How to trap program crashes with HTTP error code 500如何使用 HTTP 错误代码 500 捕获程序崩溃
【发布时间】:2017-06-20 06:11:27
【问题描述】:

我的网站上有许多写得很糟糕的 perl 程序。有时它们会崩溃,而用户会看到...

软件错误: 亚达亚达亚达。 如需帮助,请向网站管理员 (webmaster@mywebsite.com) 发送邮件,提供此错误消息以及错误的时间和日期。

我无权访问该电子邮件地址,即使我这样做了,也无法信任那些顽皮的用户报告此错误。

所以我想做的是让这个错误触发 HTTP 错误 500,这样我就可以用 htaccess 文件中的一行来监控它,比如 ...

错误文档 500 /fixThisBug.shtml

【问题讨论】:

  • 1) 查找包含“webmaster@mywebsite.com”的文件 2) 将代码更改为 die 而不是打印消息 3) 更新您的 Apache 配置
  • (换句话说,解决问题的根本原因,而不是试图绕过它。)
  • 你是说这个消息是由 perl 程序自己生成的吗?当然,该电子邮件地址不包含在任何 perl 脚本中。我不明白为什么我收到此错误而不是 HTTP 500 错误。

标签: apache .htaccess perl http server


【解决方案1】:

感谢 ThisSuitIsBlackNot 的指导。

perl 程序都有

use CGI::Carp(fatalsToBrowser);

这抑制了 HTTP 500 错误。只需删除它,程序就会“正常”崩溃。

【讨论】:

  • 很好的发现。 fatalsToBrowser 永远不应该在生产中启用,因为它可以向潜在的攻击者透露有关脚本内部的详细信息。另外,如果fatalsToBrowser 确实没有被引用或在qw 中,这告诉我你的脚本没有use strict;
猜你喜欢
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 2018-01-16
相关资源
最近更新 更多