以下是http://www.php.net/manual/en/intro.pcntl.php
Process Control should not be enabled within a web server environment and unexpected results may happen if any Process Control functions are used within a web server environment.
在我的网络服务器上启用它有什么副作用?它的威胁和安全问题是什么?
非常感谢你的帮助
答案 0 :(得分:5)
启用扩展程序和使用这些功能之间存在很大差异。只是启用扩展应该没有任何副作用。
另一方面,提供的功能可能会带来一些恶作剧。 Forks can be abused,signals can be sent到其他进程,告诉他们执行您可能不想要的操作,并且可以修改与Web服务器守护程序具有相同所有者的priorities of processes。
换句话说,除非你控制在该机器上运行的所有PHP,例如在共享托管环境中,否则它不是你想要启用的东西。
答案 1 :(得分:4)
如果启用此功能,不受信任的PHP代码作者可以fork-bomb您的服务器,这比您想象的更难防范。
不受信任的PHP代码作者可能会终止或暂停Web服务器,或者与Web服务器作为同一用户运行的任何进程。 (如果Web服务器以root身份运行不受信任的PHP代码,则它可以停止或挂起服务器上的所有进程。)或者,如果您使用的是FastCGI或类似工具,它可能会终止或挂起作为同一用户运行的任何其他任务。
不受信任的PHP代码作者可以调用wait(2)
系列函数,这将极度混淆服务器或FastCGI接口。它可能会挂起它,它可能会导致它崩溃,取决于服务器。
当然,PHP进程控制标志实际上只是建议 - PHP解释器中的错误将允许恶意代码作者所有这些和更多。这个设置只是为了让诚实的程序员诚实。
您在mod_php
(或其他服务器的类似技术)中运行的任何代码都可以完全访问Web服务器可以执行的所有操作。
您在FastCGI(或类似技术)中运行的任何代码都可以完全访问FastCGI系统可以执行的所有操作,具体取决于操作系统的访问控制。
如果你真的想限制不受信任的PHP代码可以做什么,我建议调查不同的强制访问控制机制,例如AppArmor,TOMOYO,SELinux或{{3 }}