ignore_user_abort() 函数的安全隐患


Security implications of ignore_user_abort() function

PHP的ignore_user_abort()函数有任何安全隐患吗?

我在 DoS 中思考。例如,当函数在某些资源昂贵的代码中向匿名流量公开时。

除了前面的答案之外,我还想补充一点,风险并不大,但正在转移一点。

如果目标是通过多次调用昂贵的脚本来使服务器过载,很明显,调用ignore_user_abort(true);使攻击者无需保持连接打开。该脚本将继续执行连接状态并消耗资源。
相比之下,如果没有ignore_user_abort(true);脚本将在第一个输出上结束其执行(如果没有发生输出,脚本将像第一个变体 [1] 一样消耗)。

在DoS攻击(尤其是DDoS攻击)的情况下,攻击者在打开(并保持打开)大量连接方面可能绝对没有问题。因此,从这个角度来看ignore_user_abort没有区别。

我想不出使用此功能的任何进一步的安全相关影响。

我什至会声称大多数PHP开发人员并不真正知道他们的脚本的执行可能会因为连接丢失而停止在中间的某个地方。我想大多数人会猜测他们的脚本在所有情况下都会执行到最后,尽管这不是默认设置。

我没有看到 ignore_user_abort() 函数有任何直接的安全影响。

就DoS攻击而言,考虑包含的脚本是

  • 资源昂贵
  • 暴露于匿名流量

应该关注服务器过载,这可能导致 暂时或无限期中断或暂停服务 .

如果可能的话,明智的做法是为这种资源昂贵的代码找到替代方案:

  • 如果包含脚本用于模拟 cron 任务,则最好使用 crontab 代替。
  • 如果可能的话,明智的做法是设置编程限制,只运行这种资源昂贵的代码的一个实例,而不管包含的脚本会获得多少页面点击量。

希望这有所帮助。