错误日志应该记录什么信息?

信息安全 php 错误处理 日志记录
2021-08-30 05:07:11

如果发生错误以及何时发生错误,我想用有用的信息填充我的错误日志。我想使用日志来发现和修复我网站上的错误,但也可能记录黑客尝试。对于 PHP Web 应用程序,哪些信息被认为是重要的,为什么?哪些信息有用?什么是矫枉过正?

我目前的清单是:

  • 错误的类型。
  • 对应的错误信息。
  • 发生错误的 URL。
  • 时间戳。
  • 用户的 IP 和用户代理。
  • 引用 URL。
4个回答

通常,您记录的数量取决于错误的类型。越关键,您记录的越多。

关于您想要记录的其他内容

  • 导致错误的文件的文件名将在列表的顶部,并带有行号。
  • 如果错误是抛出异常的结果,则堆栈跟踪信息。

我认为只要有用,就不会在发生错误时过度记录日志量。我唯一一次看到日志变得非常糟糕的是,即使没有发生错误,也会占用大量日志。

可以在OWASP 网站上找到更多信息 - 错误处理和日志记录

我正在使用异常屏蔽模式。

首先:应用程序将我(作为开发人员)需要的所有信息记录到数据库、文件...

第二:应用程序向客户端返回一条不包含敏感内部信息的消息。

应用程序可以收集的私人信息(屏蔽):

  • 客户端环境变量(url、ip、语言...)
  • 错误位置:堆栈
  • 我的业务变量(自定义错误处理)

我决定将未处理的异常和自定义处理的异常分开,并且我为每种类型的异常都有日志记录模板

马克和伊戈尔有很好的建议。我还建议在 OWASP 上阅读有关错误处理和日志记录的信息。

还有一件事,无论您记录什么,请务必清理来自用户的记录信息,例如 url 引用、get/post 变量、用户名等。换句话说,任何可以被远程用户操作的东西。您可能不希望最终记录一个 100,000 个字符长的用户名。

除了您提到的内容之外,如果可用,我会尝试包含 POST 值 ($_POST) 和 cookie/会话数据。