PHP程序安全战略[网站编程]
本文“PHP程序安全战略[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
PHP最初是被称作Personal Home Page,后来随着PHP成为一种非常风行的脚本语言,名称也随之改变了,叫做Professional HyperText PreProcessor.以PHP4.2为例支持它的WEB服务器有:Apache, Microsoft Internet information Sereve, Microsoft Personal web Server,AOLserver,Netscape Enterprise 等等.
PHP是一种功效强盛的语言和注释器,无论是作为模块方法包含到web服务器里安装的还是作为单独的CGI程序程序安装的,都能拜候文件、履行号令大概在服务器上翻开链接.而这些特点都使得PHP运行时带来安全问题.固然PHP是特地计划成一种比用Perl或C语言所编写的CGI程序要安全的语言,但精确利用编译时和运行中的一些配置选项以及得当的利用编码将会保证其运行的安全性.
1、安全从开始编译PHP开始.
在编译PHP之前,首先确保操作系统的版本是最新的,必要的补钉程序必须安装过.别的利用编译的PHP也该当是最新的版本,关于PHP的安全漏洞也常有发现,请利用最新版本,假如已经安装过PHP请进级为最新版本:4.2.3.
相关链接:http://security.e-matters.de/advisories/012002.html
安装编译PHP历程中要注意的3个问题:
1、只答应CGI文件从特定的目录下履行:首先把处理CGI脚本的默许句柄删除,然后在要履行CGI脚本的目录在http.conf 文件中加入ScriptAlias指令.
#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的第一个参数指明在Web中的可用相对途径,第二个参数指明脚本放在服务器的目录.应当对每个目录
别名都用Directory,这样可以使得除系统管理员之外的人不知道Web服务器上CGI脚本的清单.
Directory答应用户成立自己的CGI脚本.也可用SriptAliasMatch,但Directory更简单利用. 答应用户成立自己
CGI脚本大概会招致安全问题,你大概不但愿用户成立自己的CGI. Apache默许配置是注释掉cgi—script的处理句柄,但有/cgi-bin目录利用SriptAlias和Directory指令. 你也可禁止CGI履行,但仍答应履行PHP脚本.
2.把PHP解析器放在web目录外
把PHP解析器放在Web目录树外是非常重要的做法.这样可以避免web服务器对PHP的解析器的滥用.分外是
不要把PHP解析器放在cgi-bin或答应履行CGI程序的目录下.但是,利用Action解析脚本是不大概的,因为用Action指令时,PHP解析器大大都要放在可以履行CGI的目录下只有当PHP脚本作为CGI程序履行时,才能把PHP解析器放在Web目录树之外.
假如但愿PHP脚本作为CGI程序履行(这们可以把PHP解析器放在Web目录树之外),可以这样:
( 1)全部的PHP脚本必须位于能履行CGI程序的目录里.
( 2)脚本必须是可履行的(仅在UNIX/Linux机械里).
(3)脚本必须在文件头包含PHP解析器的途径.
你可用下面号令使PHP脚本为可履行:
#chmod +x test.php4
这样使在当前目录下的文件名为test.PhP4的脚本变成可履行. 下面是一个能作为CGI程序运行的PHP脚的小例子.
#!/usr/local/bin/php
echo "This is a my small cgi program”
3. 按Apache模块方法安装:
当将PHP作为Apache模块利用时,它将担当Apche的用户权限(普通情形下用户为“nobody”).这一点关于安全性和考证有不少影响.比方,利用PHP拜候数据库,除非数据库支持内建的拜候掌握,将不得不设置数据库关于用户“nobody”的可拜候权限.这将意味着恶意的脚本在没有拜候用户名和密码,也能拜候并改正数据库.通过Apache考证来保护数据不被表露,大概也可以利用LDAP、.htaccess文件等计划自己的拜候掌握模子,并在PHP脚本中将此代码作为此中部份引入. 普通,一旦安全性成立,此处PHP用户(此情形即Apache用户)就风险大大降低了,会发现PHP护目前已被封禁了将大概的染毒文件写入用户目录的本领. 此处最常犯的安全性错误是赋予Apache服务器根(root)权限. 将Apache用户权限晋升到根权限是极度危险的.大概会危及整个系统,因此要当心利用sudo,chroot安全隐患大的号令等.除非你对安全有绝对的掌握,不然不要让其以ROOT权限运行.
更安全的php 上
2、让PHP的利用更安全.
1、以安全情势运行PHP
以安全情势运行PHP是使PHP脚本安全利用的好办法,分外是在答应用户利用自己开辟的PHP脚本时.利用安全情势会使PHP在运行函数时查抄能否存在安全问题. include、readfile、fopen、file、unlink、rmdir等等:被包含的文件大概该文件所在目录的全部者必须是正在运行的脚本的全部者; Exec、System、Passthm等等:要履行的程序必须位于特定的目录(默许为/usr/local/php/bin).编译PHP时可以用—with-exe-dir选项设定这个值.
Mysql—Connect:这个函数用可选的用户名衔接MySQL数据库.在安全情势下,用户名必须是当前被履行的脚本的全部者,或运行httpd的用户名(普通是nobody).
HTTP Authentication:包含HTTP考证代码脚本全部者的用户ID(数字型)会自动加到考证域.这样可以避免有人通过抓取密码的程序来拐骗同一个服务器上的HTTP考证脚本.
2、利用 用户辨认和考证
有时需求唯一地确认一个用户.用户普通由恳求和呼应系统确认.用户名/口令组合就是这种系统的一个很好的例子,比方系统要求给出A1i的口令,呼应的是Ali的口令.这样考证是因为只有Ali才知道这个口令.
(1)服务器端用户验征
这是用于服务端上对PHP程序要求最小的考证办法.只要让Apache来管理对用户的考证就行了.
以上是“PHP程序安全战略[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:已经没有了
- ·下一篇文章:PHP中避免SQL注入攻击办法
- ·中查找“PHP程序安全战略”更多相关内容
- ·中查找“PHP程序安全战略”更多相关内容