例如 ,使用mod_php而不是php-cgi更安全吗? 或者使用mod_perl而不是传统的cgi-scripts更安全?

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

===============>>#1 票数:15 已采纳

安全在什么意义上? 无论哪种方式,它实际上取决于正在运行的脚本以及它的编写程度。 这些天太多的脚本都是半成品,并且没有正确地进行输入验证。

我个人更喜欢FastCGI到mod_php,因为如果FastCGI进程死了,新的进程就会产生,而我看到mod_php会杀掉整个Apache。

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

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

===============>>#2 票数:8

如果你运行自己的服务器去模块方式,它会更快。 如果您在共享服务器上,则已经为您做出了决定,通常是在CGI方面。 原因是文件系统权限。 PHP作为一个模块运行时具有http服务器的权限(通常是'apache'),除非你可以将脚本chmod到该用户,你必须将它们chmod到777 - 世界可读。 这意味着,您的服务器邻居可以查看它们 - 想一想存储数据库访问密码的位置。 大多数共享服务器使用像phpsuexec这样的东西来解决这个问题,这些东西使用脚本所有者的权限运行脚本,所以你可以(必须)将你的代码chmoded到644. Phpsuexec只运行PHP作为CGI - 这或多或少都是,它只是一个本地机器的东西 - 对整个世界没有任何影响。

===============>>#3 票数:5

大多数安全漏洞都是由于脚本本身的糟糕编程而发生的,所以如果它们作为cgi或模块运行它们真的没什么问题。 也就是说,apache模块可能会崩溃整个网络服务器(特别是如果使用线程MPM)并且mod_php有点着名。

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

你的威胁模型是什么?

===============>>#4 票数:4

从PHP 5.2.6的PHP install.txt文档:

与CGI二进制文件相比,服务器模块提供了明显更好的性能和附加功能。

对于IIS / PWS:

警告

通过使用CGI设置,您的服务器可能会受到多种攻击。 请阅读我们的CGI安全部分,了解如何保护自己免受这些攻击。

===============>>#5 票数:3

像mod_php或FastCGI这样的模块比普通的CGI快得多..只是不做CGI。 正如其他人所说,PHP程序本身是最大的安全威胁,但忽略了共享主机上的另一个考虑因素。

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

即使您控制自己的托管,请记住,服务器上的另一个被黑客入侵的Web应用程序可能是其他人的管道。

===============>>#6 票数:2

使用内置模块肯定比使用CGI更快。 安全隐患取决于配置。 在默认配置中它们几乎相同,但cgi允许内置模块无法提供的一些更安全的配置,特别是在共享主机的上下文中。 你究竟想要什么来保护自己?

  ask by Sarien translate from so

未解决问题?本站智能推荐:

1回复

我可以使用相同的PHP代码进行模块和CGI安装吗

一个简单的,也许是愚蠢的问题: 无论PHP是作为模块安装还是作为cgi二进制文件安装,我都可以使用完全相同的PHP代码吗? 我知道这两种情况下的处理是不同的,但是Apache是​​否完全由我来照顾(假设我在httpd.conf中进行了正确的设置)还是必须以某种方式反映在实际的PHP代码中
2回复

Apache的mod_php还是FastCGI? 哪个对Wordpress有好处?

我有关于在不同的配置中运行PHP的基本想法,如mod_php,cgi,FastCGI等。 在我的发现和测试中,我发现FastCGI略胜一筹。 我最喜欢FastCGI对SuEXEC的支持。 等等我不想再次进入基准测试业务。 如果你上网,你会发现在每秒处理的请求数量方面,证明一种方式比另
2回复

我如何才能告诉Apache2,默认情况下运行mod_php5,但以CGI模式运行此VH?

服务器 我有一个用于托管当前项目的开发服务器。 以下是一些统计信息: 问题 我正在使用mod_php5运行PHP 5.3.3,并且运行良好。 但是我只需要在服务器上的一个VH上运行PHP 5.2.11,所以我使用phpfarm来编译PHP 5.2.11。 我想将Apac
1回复

以Apache模块运行的php5给出错误400(错误请求)

服务器配置:具有Centos6.5 + Apache2.2 prefork + Php5.3的VPS 我的服务器现在已将Php作为cgi运行,并且我想为.php5文件添加另一个处理程序以作为Apache模块执行,因此php.conf的一部分如下所示: php5_module已加载:
1回复

如何在Apache的多个部署设置中控制Dancer 2(不使用纯CGI)?

我们有一个perl Web应用程序,使用了很长一段时间以来一直使用纯CGI,现在我们正尝试将其他功能(mod_perl,fastcgi,whathaveyou)移植到Dancer 2,以便获得更高的性能。 这是我们现在拥有的Apache设置(我强烈建议使用Starman,但我们希望坚持使用
1回复

Apache Mod PHP和脚本调用

假设我在配置了mod php的apache内运行一个PHP脚本foo.php,然后说我从浏览器(或任何其他方式)调用了该脚本,apache是​​否产生了一个新的执行脚本的进程? 它是如何工作的? 有人可以指出我对此的一些好文章吗?
1回复

Apache php库缓存

如果我在Apache中运行一个“需要”sa php文件的php脚本,有没有办法可以将其保存在内存中,这样每次都不需要从磁盘中提取它?
1回复

在一台Apache服务器上的单独vhost中运行Apache mod_php和mod_fastcgi

所以,我需要在一台服务器上运行多个php应用程序/站点。 一个或多个应该使用apache和mod_php5运行,一个或多个应该能够使用mod_fastcgi和php-fpm运行。 mod_php5目前是正常的,如果我禁用mod_php5,fastcgi工作,但我很难让他们同时工作。 我
1回复

如何找出在Windows10 64位操作系统上运行的XAMPP上当前使用的“Apache配置文件”?

我在我的笔记本电脑上使用PHP 7.3.4 ,它运行在Windows 10 Home Single Language 64位操作系统上 。 我在我的笔记本电脑上安装了最新版本的XAMPP安装程序,安装了Apache / 2.4.39(Win64)和PHP 7.3.4 为了检查当前正在
2回复

Apache杀死了长时间运行的进程

在linux apache服务器上(ubuntu 14.04 lts,带mpm_prefork和mod_php的apache 2.4.7),我有很长时间的PHP脚本。 这些被阿帕奇杀死。 我们调整了php设置(max_execution_time,set_time_limit ...)