ignore_user_abort()函数的安全含义

时间:2015-02-01 18:04:20

标签: php security denial-of-service

PHP的ignore_user_abort()是否具有安全隐含功能?

我正在考虑DoS。例如,在某些代码中将函数暴露给匿名流量时,资源非常昂贵。

2 个答案:

答案 0 :(得分:2)

我没有看到ignore_user_abort()函数对安全性有直接影响。

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

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

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

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

  • 如果使用包含脚本来模拟cron任务,则最好使用crontab。
  • 如果可能的话,将编程限制放在适当的位置以便只运行这种资源昂贵的代码的一个实例是明智的,无论包含的脚本会有多少页面命中。

希望这有一些帮助。

答案 1 :(得分:1)

除了上一个答案之外,我还想补充一点,风险并不大,但是会有所改变。

如果目标是通过多次调用昂贵的脚本来使服务器超载,则很明显调用ignore_user_abort(true);可以使攻击者免于保持连接打开的需要。该脚本将继续执行连接状态并消耗资源 相反,如果没有ignore_user_abort(true);,脚本将在第一个输出上结束执行(如果没有输出,则脚本将与第一个变量[1]一样消耗)。

如果发生DoS攻击(尤其是DDoS攻击),攻击者在打开(并保持打开)大量连接时可能完全没有问题。因此,从这个角度来看,ignore_user_abort没有任何区别。

我无法想到使用此功能时与安全相关的任何其他影响。

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