例如。 使用起来是否更安全 mod_php 代替 php-cgi?或者使用起来更安全 mod_perl 而不是传统的 cgi-scripts?

我主要对安全问题感兴趣,但如果存在显着差异,速度可能是一个问题。

有帮助吗?

解决方案

什么意义上的安全?不管怎样,这实际上取决于正在运行的脚本以及它的编写情况。现在有太多的脚本都是半途而废的,并且没有正确地进行输入验证。

与 mod_php 相比,我个人更喜欢 FastCGI,因为如果 FastCGI 进程终止,将会生成一个新进程,而我已经看到 mod_php 杀死了整个 Apache。

至于安全性,使用 FastCGI 从技术上讲,您可以在与默认 Web 服务器用户不同的用户下运行 php 进程。

另外,如果您正在使用 Apache 的新工作线程支持,您将需要确保您没有使用 mod_php,因为某些扩展不是线程安全的,并且会导致竞争条件。

其他提示

如果您运行自己的服务器,请采用模块方式,速度会更快一些。如果您使用的是共享服务器,那么通常是在 CGI 方面已经为您做出了决定。其原因是文件系统权限。PHP 作为一个模块以 http 服务器(通常是“apache”)的权限运行,除非您可以 chmod 您的脚本到该用户,否则您必须将它们 chmod 为 777 - 世界可读。唉,这意味着您的服务器邻居可以查看它们 - 想想您存储数据库访问密码的位置。大多数共享服务器已经使用 phpsuexec 等解决了这个问题,它们以脚本所有者的权限运行脚本,因此您可以(必须)将代码更改为 644。Phpsuexec 仅与 PHP 作为 CGI 一起运行 - 这或多或少是全部,它只是本地机器的事情 - 对整个世界没有任何影响。

大多数安全漏洞的发生都是由于脚本本身的糟糕编程造成的,因此如果它们作为 cgi 或模块运行,那就真的没有实际意义了。也就是说,apache 模块可能会导致整个 Web 服务器崩溃(特别是使用线程 MPM 时),而 mod_php 正是因此而闻名。

cgi会慢一些,但是现在有解决方案,主要是FastCGI和朋友。

您的威胁模型是什么?

来自 PHP 5.2.6 的 PHP install.txt 文档:

与CGI二进制相比,服务器模块提供了更好的性能和额外功能。

对于 IIS/PWS:

警告

通过使用CGI设置,您的服务器可以对几个可能的攻击开放。请阅读我们的CGI安全部门,以了解如何防御这些攻击。

mod_php 或 FastCGI 等模块比普通 CGI 快得令人难以置信。只是不要做CGI。正如其他人所说,PHP 程序本身是最大的安全威胁,但忽略了还有另一个考虑因素,即在共享主机上。

如果您的脚本与其他 php 程序位于共享主机上,并且该主机未在安全模式下运行,那么所有服务器进程很可能都以同一用户身份运行。这可能意味着任何其他 php 脚本都可以读取您自己的脚本,包括数据库密码。因此,请务必调查服务器配置,以确保其他人无法读取您的代码。

即使您控制自己的托管,请记住服务器上的另一个被黑客攻击的 Web 应用程序也可能成为进入其他应用程序的渠道。

使用内置模块肯定会比使用 CGI 更快。安全影响取决于配置。在默认配置中,它们几乎相同,但 cgi 允许一些内置模块无法提供的更安全的配置,特别是在共享托管的上下文中。您究竟想保护自己免受什么侵害?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top