1


以下是来自http://www.php.net/manual/en/intro.pcntl.php的引用

不应在 Web 服务器环境和意外结果中启用过程控制
如果在 Web 服务器环境中使用任何过程控制功能,则可能会发生这种情况。

在我的网络服务器上启用它有什么副作用?其中有哪些威胁和安全问题?

非常感谢你的帮助

4

2 回答 2

5

仅启用扩展和使用功能之间存在很大差异。仅仅启用扩展应该没有任何副作用。

另一方面,提供的功能可能会带来一些恶作剧。 可以滥用分叉可以向其他进程发送信号,告诉它们执行您可能不希望执行的操作,并且可以修改与 Web 服务器守护 进程具有相同所有者的进程的优先级。

换句话说,除非您控制在该机器上运行的所有 PHP,例如在共享主机环境中,否则您不想启用它。

于 2011-03-12T07:31:32.887 回答
4

如果您启用此功能,不受信任的 PHP 代码作者可能会分叉炸弹您的服务器,这比您想象的更难防范。

不受信任的 PHP 代码作者可能会终止或挂起 Web 服务器,或以与 Web 服务器相同的用户身份运行的任何进程。(如果网络服务器以 root 身份运行不受信任的 PHP 代码,那么它可以停止或暂停服务器上的所有进程。)或者,如果您使用 FastCGI 或类似工具,它可能会终止或暂停以同一用户身份运行的任何其他任务。

不受信任的 PHP 代码作者可能会调用wait(2)函数族,这会严重混淆服务器或 FastCGI 接口。它可能会挂起它,它可能会导致它崩溃,这取决于服务器。

当然,PHP 进程控制标志实际上只是建议性的——PHP 解释器中的错误将允许恶意代码作者进行所有这些事情以及更多事情。这个设置只是为了让诚实的程序员保持诚实。

您在其中运行的任何代码mod_php(或其他服务器的类似技术)都可以完全访问 Web 服务器可以执行的所有操作。

基于操作系统的访问控制,您在 FastCGI(或类似技术)中运行的任何代码都可以完全访问 FastCGI 系统可以执行的所有操作。

如果你真的想限制不受信任的 PHP 代码可以做什么,我建议研究不同的强制访问控制机制,例如AppArmorTOMOYOSELinuxSMACK

于 2011-03-12T07:42:37.773 回答