第4章 安全
PHP是一门功能强大的语言,其解释程序无论是作为一个模块包含在网络服务器中,还是作为单独的CGI:二进制程序运行,都可以有效地访问文件、执行命令或打开服务器上的网络连接。这些属性使得在缺省情况下,网络服务器上运行任何东西都不安全。PHP是一种比Perl或C在编写CGI程序时更安全的一种语言,恰当的选择编译时间及运行时间的配置选项,将使用户得到自由与安全的最佳组合。
使用PHP有多种方法,相应地就有大量控制其行为的配置选项。大量的配置选项保证用户可以出于大量不同的目的使用PHP,但同时也意味着一些选项和服务器配置项相结合的结果可能造成安装的不安全。这一章旨在于介绍不同的配置选项组合及它们可以安全使用的情况。CGI二进制可能发生的冲击有时出于某些原因不希望将PHP作为一个模块结合到服务器软件(如Apache)之中,这时,就可能选择将PHP作为CGI二进制程序来安装,或者将PHP和不同的CGI封装在一起,在创建脚本的chroot and setuid环境。这种安装通常是在网络服务器的cgi—bin目录中安装叮执行的PHP二二进制程序。CERq’顾问——CA.96.11建议不要将任何解释程序放置在cgi.bin目录中。尽管PHP二进制程序本身可以作为独立的解释程序,但它设计的初衷在于防止安装可能产生的冲击:
在URL中问号(?)后的查询信息是通过CGI接口作为命令行参数传递给解释程序的。通常,解释程序会打开并执行命令行中的第一个参数所指向的文件。
当作为CGI进制程序调用时,PHP不会对命令行参数进行解释。
……
展开