apache模块与cgi(关于安全性)之间有区别吗?
例如:使用它是否比 使用更安全?还是使用起来比传统更安全?mod_php
php-cgi
mod_perl
cgi-scripts
我主要对安全问题感兴趣,但如果存在重大差异,速度可能是一个问题。
例如:使用它是否比 使用更安全?还是使用起来比传统更安全?mod_php
php-cgi
mod_perl
cgi-scripts
我主要对安全问题感兴趣,但如果存在重大差异,速度可能是一个问题。
安全在什么意义上?无论哪种方式,它实际上都取决于正在运行的脚本以及它的编写情况。如今,太多的脚本是半屁股的,没有正确地进行输入验证。
我个人更喜欢FastCGI而不是mod_php因为如果FastCGI进程死亡,就会生成一个新的进程,而我已经看到mod_php杀死整个Apache。
至于安全性,使用FastCGI,从技术上讲,您可以在与默认Web服务器用户不同的用户下运行php进程。
另外,如果您使用的是Apache的新工作线程支持,则需要确保不使用mod_php因为某些扩展不是线程安全的,并且会导致争用条件。
如果您按照模块的方式运行自己的服务器,则速度会更快一些。如果您在共享服务器上,则已经为您做出了决定,通常是在CGI方面。这样做的原因是文件系统权限。PHP作为一个模块在http服务器(通常是“apache”)的权限下运行,除非你可以将脚本chmod给该用户,否则你必须将它们chmod为777 - 世界可读。这意味着,唉,您的服务器邻居可以查看它们 - 想想您存储数据库访问密码的位置。大多数共享服务器已经使用phpsuexec等东西解决了这个问题,这些东西以脚本所有者的权限运行脚本,因此您可以(必须)将代码chmoded为644。Phpsuexec只与PHP作为CGI一起运行 - 这或多或少都是,它只是一个本地机器的东西 - 对整个世界没有任何区别。