PHP 最大执行时间已超出——是攻击的迹象吗?

PHP 最大执行时间已超出——是攻击的迹象吗?

今天,我们的 Web 服务器 CPU 负载非常高。我们的应用程序卡住了,没有反应。我们可以通过设置最长执行时间从 180 秒缩短至 90 秒

但是,日志文件现在充满了以下错误:

Maximum execution time of 90 seconds exceeded  {"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\FatalError(code: 0):

大约每隔 10 秒,日志中就会出现一个此类新错误。

我们的应用程序的任何表单和脚本都不应该花费这么长的执行时间。因此,我的问题是,此错误日志是否可能是攻击(例如 DDoS)的迹象?此外,是否有机会找出触发错误的客户端的 IP 地址?

答案1

但是,日志文件现在充满了以下错误:

您已经告诉 PHP 终止所有运行时间超过 90 秒的脚本,因此这就是您得到的结果。

我们的应用程序的任何表单和脚本都不应该花费这么长的执行时间。

理论和实践有时会出现分歧。您应该认真调试问题 - 找出长时间运行的脚本并找出其原因 - 深入日志和 URL/cookie/标头分析,可能还要提高日志级别。

所以这似乎不是应用程序本身的问题。

这是一个非常危险的假设。很可能攻击仍在继续。目前,在攻击者真正找到安全漏洞之前,可能还有时间修复问题(高负载可能导致竞争条件,进而可能打开循环漏洞)。至少,您的网站将得到一些针对 DoS 的强化。

答案2

您必须调试脚本,放置计时元素并添加到一些调试日志中。我怀疑这是一次攻击,可能是脚本中出现了一些未预料到的循环。我编写的脚本中没有捕获错误条件,并创建了一个未预料到的循环。我的猜测是,这正是正在发生的事情。

答案3

假设您的应用程序是完美的,并且无法确定问题的原因,您唯一的希望就是像 Akamai 或 Cloudflare 这样的商业正常运行时间保护服务。

相关内容