PHP最初是被称作Personal Home Page
![](/icons/61582dou.gif)
后来随着PHP成为
![](/icons/61582yi.gif)
种非常流行
![](/icons/61582de.gif)
脚本语言
![](/icons/61582dou.gif)
名称也随的改变了
![](/icons/61582dou.gif)
叫做Professional HyperText PreProcessor
![](/icons/61582dou2.gif)
以PHP4.2为例支持它
![](/icons/61582de.gif)
WEB服务器有:Apache, Microsoft Internet information Sereve, Microsoft Personal web Server,AOLserver,Netscape Enterprise 等等
![](/icons/61582dou2.gif)
PHP是
![](/icons/61582yi.gif)
种功能强大
![](/icons/61582de.gif)
语言和解释器
![](/icons/61582dou.gif)
无论是作为模块方式包含到web服务器里安装
![](/icons/61582de.gif)
还是作为单独
![](/icons/61582de.gif)
CGI
![](/icons/61582chengxu.gif)
![](/icons/61582chengxu.gif)
安装
![](/icons/61582de.gif)
![](/icons/61582dou.gif)
都能访问文件、执行命令或者在服务器上打开链接
![](/icons/61582dou2.gif)
而这些特性都使得PHP运行时带来安全问题
![](/icons/61582dou2.gif)
虽然PHP是特意设计成
![](/icons/61582yi.gif)
种比用Perl或C语言所编写
![](/icons/61582de.gif)
CGI
![](/icons/61582chengxu.gif)
要安全
![](/icons/61582de.gif)
语言
![](/icons/61582dou.gif)
但正确使用编译时和运行中
![](/icons/61582de.gif)
![](/icons/61582yi.gif)
些配置选项以及恰当
![](/icons/61582de.gif)
应用编码将会保证其运行
![](/icons/61582de.gif)
安全性
![](/icons/61582yi.gif)
、安全从开始编译PHP开始
![](/icons/61582dou2.gif)
在编译PHP的前
![](/icons/61582dou.gif)
首先确保操作系统
![](/icons/61582de.gif)
版本是最新
![](/icons/61582de.gif)
![](/icons/61582dou.gif)
必要
![](/icons/61582de.gif)
补丁
![](/icons/61582chengxu.gif)
必须安装过
![](/icons/61582dou2.gif)
另外使用编译
![](/icons/61582de.gif)
PHP也应当是最新
![](/icons/61582de.gif)
版本
![](/icons/61582dou.gif)
有关PHP
![](/icons/61582de.gif)
安全漏洞也常有发现
![](/icons/61582dou.gif)
请使用最新版本
![](/icons/61582dou.gif)
如果已经安装过PHP请升级为最新版本:4.2.3
![](/icons/61582dou2.gif)
相关链接:http://security.e-matters.de/advisories/012002.html
安装编译PHP过程中要注意
![](/icons/61582de.gif)
3个问题:
1、只容许CGI文件从特定
![](/icons/61582de.gif)
目录下执行:首先把处理CGI脚本
![](/icons/61582de.gif)
默认句柄删除
![](/icons/61582dou.gif)
然后在要执行CGI脚本
![](/icons/61582de.gif)
目录在http.conf 文件中加入ScriptAlias指令
![](/icons/61582dou2.gif)
#Addhadler cgi-script .cgi
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
<Directory "/usr/local/apache/cgi-bin'>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
<Directory "/home/*/public_html/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
SriptAlias
![](/icons/61582de.gif)
第
![](/icons/61582yi.gif)
个参数指明在Web中
![](/icons/61582de.gif)
可用相对路径
![](/icons/61582dou.gif)
第 2个参数指明脚本放在服务器
![](/icons/61582de.gif)
目录
![](/icons/61582dou2.gif)
应该对每个目录
别名都用Directory
![](/icons/61582dou.gif)
这样可使得除系统管理员的外
![](/icons/61582de.gif)
人不知道Web服务器上CGI脚本
![](/icons/61582de.gif)
清单
![](/icons/61582dou2.gif)
Directory允许用户创建自己
![](/icons/61582de.gif)
CGI脚本
![](/icons/61582dou2.gif)
也可用SriptAliasMatch
![](/icons/61582dou.gif)
但Directory更容易使用
![](/icons/61582dou2.gif)
允许用户创建自己
CGI脚本可能会导致安全问题
![](/icons/61582dou.gif)
你可能不希望用户创建自己
![](/icons/61582de.gif)
CGI
![](/icons/61582dou2.gif)
Apache默认配置是注释掉cgi—script
![](/icons/61582de.gif)
处理句柄
![](/icons/61582dou.gif)
但有/cgi-bin目录使用SriptAlias和Directory指令
![](/icons/61582dou2.gif)
你也可禁止CGI执行
![](/icons/61582dou.gif)
但仍允许执行PHP脚本
![](/icons/61582dou2.gif)
2.把PHP解析器放在web目录外
把PHP解析器放在Web目录树外是非常重要
![](/icons/61582de.gif)
做法
![](/icons/61582dou2.gif)
这样可以防止web服务器对PHP
![](/icons/61582de.gif)
解析器
![](/icons/61582de.gif)
滥用
![](/icons/61582dou2.gif)
特别是
不要把PHP解析器放在cgi-bin或允许执行CGI
![](/icons/61582chengxu.gif)
![](/icons/61582de.gif)
目录下
![](/icons/61582dou2.gif)
然而
![](/icons/61582dou.gif)
使用Action解析脚本是不可能
![](/icons/61582de.gif)
![](/icons/61582dou.gif)
![](/icons/61582yinwei.gif)
用Action指令时
![](/icons/61582dou.gif)
PHP解析器大多数要放在能够执行CGI
![](/icons/61582de.gif)
目录下只有当PHP脚本作为CGI
![](/icons/61582chengxu.gif)
执行时
![](/icons/61582dou.gif)
才能把PHP解析器放在Web目录树的外
![](/icons/61582dou2.gif)
如果希望PHP脚本作为CGI
![](/icons/61582chengxu.gif)
执行(这们可以把PHP解析器放在Web目录树的外)
![](/icons/61582dou.gif)
可以这样:
( 1)所有
![](/icons/61582de.gif)
PHP脚本必须位于能执行CGI
![](/icons/61582chengxu.gif)
![](/icons/61582de.gif)
目录里
![](/icons/61582dou2.gif)
( 2)脚本必须是可执行
![](/icons/61582de.gif)
(仅在UNIX/Linux机器里)
![](/icons/61582dou2.gif)
(3)脚本必须在文件头包括PHP解析器
![](/icons/61582de.gif)
路径
![](/icons/61582dou2.gif)
你可用下面命令使PHP脚本为可执行:
#chmod +x test.php4
这样使在当前目录下
![](/icons/61582de.gif)
文件名为test.PhP4
![](/icons/61582de.gif)
脚本变为可执行
![](/icons/61582dou2.gif)
下面是
![](/icons/61582yi.gif)
个能作为CGI
![](/icons/61582chengxu.gif)
运行
![](/icons/61582de.gif)
PHP脚
![](/icons/61582de.gif)
小例子
![](/icons/61582dou2.gif)
#!/usr/local/bin/php
echo "This is a my small cgi program”
3. 按Apache模块方式安装:
当将PHP作为Apache模块使用时
![](/icons/61582dou.gif)
它将继承Apche
![](/icons/61582de.gif)
用户权限(
![](/icons/61582yi.gif)
般情况下用户为“nobody”)
![](/icons/61582dou2.gif)
这
![](/icons/61582yi.gif)
点对于安全性和验证有不少影响
![](/icons/61582dou2.gif)
例如
![](/icons/61582dou.gif)
使用PHP访问数据库
![](/icons/61582dou.gif)
除非数据库支持内建
![](/icons/61582de.gif)
访问控制
![](/icons/61582dou.gif)
将不得不设置数据库对于用户“nobody”
![](/icons/61582de.gif)
可访问权限
![](/icons/61582dou2.gif)
这将意味着恶意
![](/icons/61582de.gif)
脚本在没有访问用户名和密码
![](/icons/61582dou.gif)
也能访问并修改数据库
![](/icons/61582dou2.gif)
通过Apache验证来保护数据不被暴露
![](/icons/61582dou.gif)
或者也可使用LDAP、.htaccess文件等设计自己
![](/icons/61582de.gif)
访问控制模型
![](/icons/61582dou.gif)
并在PHP脚本中将此代码作为其中部分引入
![](/icons/61582dou2.gif)
通常
![](/icons/61582dou.gif)
![](/icons/61582yi.gif)
旦安全性建立
![](/icons/61582dou.gif)
此处PHP用户(此情形即Apache用户)
延伸阅读
最新评论