|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不懂的问题有很多高手帮你解决。但不要认为你是新手,就不能帮助别人,比如今天你学会了怎样安装PHP,明天还可能有朋友会问这个问题,你就可以给他解答,不要认为这是浪费时间,忙别人其实就是帮助自己。平安|办事器 后面象Shaun Clowes和rfp等都对照具体的引见了php、cgi法式在编程过程当中碰到的成绩,和若何经由过程使用法式破绽冲破体系,这篇文章咱们来经由过程对php的一些办事器端特征来停止设置装备摆设增强php的平安。写cgi剧本的时分咱们切实其实必定注重各类平安成绩,对用户输出停止严厉的过滤,然而常在岸边走哪有不湿鞋,吃烧饼哪有不失落芝麻,人有掉蹄马有掉手,连有名的phpnuke、phpMyAdmin等法式都呈现过很严重的成绩,更况且象我等小混混写的剧本。所以如今咱们假定php剧本已呈现严重成绩,好比象前一阵子 phpnuke的可以上传php剧本的大成绩了,咱们若何经由过程对办事器的设置装备摆设使剧本呈现如斯成绩也不克不及冲破体系。
1、编译的时分注重补上已知的破绽
从4.0.5入手下手,php的mail函数到场了第五个参数,但它没有好好过滤,使得php使用法式能冲破safe_mode的限制而去履行号令。所以利用4.0.5和4.0.6的时分在编译前咱们需求修正php源码包里ext/standard/mail.c文件,制止mail函数的第五参数或过滤shell字符。在mail.c文件的第152行,也就是上面这行:
if (extra_cmd != NULL) {
前面加上extra_cmd=NULL;或extra_cmd = php_escape_shell_cmd(extra_cmd);然后编译php那末咱们就修补了这个破绽。
2、修正php.ini设置装备摆设文件
以php刊行版的php.ini-dist为底本停止修正。
1)Error handling and logging
在Error handling and logging局部可以做一些设定。先找到:
display_errors = On
php缺省是翻开毛病信息显示的,咱们把它改成:
display_errors = Off
封闭毛病显示后,php函数履行毛病的信息将不会再显示给用户,如许能在必定水平上避免进击者从毛病信息得知剧本的物理地位,和一些其它有效的信息,最少给进击者的黑箱检测形成必定的妨碍。这些毛病信息能够对咱们本人有效,可让它写到指定文件中去,那末修正以下:
log_errors = Off
改成:
log_errors = On
和指定文件,找到上面这行:
;error_log = filename
去失落后面的;正文,把filename改成指定文件,如/usr/local/apache/logs/php_error.log
error_log = /usr/local/apache/logs/php_error.log
如许一切的毛病城市写到php_error.log文件里。
2)Safe Mode
php的safe_mode功效对良多函数停止了限制或禁用了,能在很大水平处理php的平安成绩。在Safe Mode局部找到:
safe_mode = Off
改成:
safe_mode = On
如许就翻开了safe_mode功效。象一些能履行体系号令的函数shell_exec()和``被制止,其它的一些履行函数如:exec(), system(), passthru(), popen()将被限制只能履行safe_mode_exec_dir指定目次下的法式。假如你其实是要履行一些号令或法式,找到以下:
safe_mode_exec_dir =
指定要履行的法式的途径,如:
safe_mode_exec_dir = /usr/local/php/exec
然后把要用的法式拷到/usr/local/php/exec目次下,如许,象下面的被限制的函数还能履行该目次里的法式。
关于平安形式下受限函数的具体信息请检查php主站的申明:
http://www.php.net/manual/en/features.safe-mode.php
3)disable_functions
假如你对一些函数的伤害性不太清晰,并且也没有利用,索性把这些函数制止了。找到上面这行:
disable_functions =
在”=“前面加上要制止的函数,多个函数用”,“离隔。
3、修正httpd.conf
假如你只答应你的php剧本法式在web目次里操作,还可以修正httpd.conf文件限制php的操作途径。好比你的web目次是/usr/local/apache/htdocs,那末在httpd.conf里加上这么几行:
<Directory /usr/local/apache/htdocs>
php_admin_value open_basedir /usr/local/apache/htdocs
</Directory>
如许,假如剧本要读取/usr/local/apache/htdocs之外的文件将不会被答应,假如毛病显示翻开的话会提醒如许的毛病:
Warning: open_basedir restriction in effect. File is in wrong directory in
/usr/local/apache/htdocs/open.php on line 4 等等。
4、对php代码停止编译
Zend对php的奉献很大,php4的引擎就是用Zend的,并且它还开辟了ZendOptimizer和ZendEncode等很多php的增强组件。优化器ZendOptimizer只需在http://www.zend.com注册就能够收费失掉,上面几个是用于4.0.5和4.0.6的ZendOptimizer,文件名分离关于各自的体系:
ZendOptimizer-1.1.0-PHP_4.0.5-FreeBSD4.0-i386.tar.gz
ZendOptimizer-1.1.0-PHP_4.0.5-Linux_glibc21-i386.tar.gz
ZendOptimizer-1.1.0-PHP_4.0.5-Solaris-sparc.tar.gz
ZendOptimizer-1.1.0-PHP_4.0.5-Windows-i386.zip
优化器的装置十分便利,包外面都有具体的申明。以UNIX版本的为例,看清操作体系,把包里的ZendOptimizer.so文件解压到一个目次,假定是/usr/local/lib下,在php.ini里加上两句:
zend_optimizer.optimization_level=15
zend_extension="/usr/local/lib/ZendOptimizer.so" 就能够了。用phpinfo()看到Zend图标右边有上面文字:
with Zend Optimizer v1.1.0, Copyright (c) 1998-2000, by Zend Technologies
那末,优化器已挂接胜利了。
然而编译器ZendEncode并非收费的,这里供应给人人一个http://www.PHPease.com的马勇设计的 编译器外壳,假如用于贸易目标,请与http://www.zend.com接洽获得允许协定。
php剧本编译后,剧本的履行速度增添很多,剧本文件只能看到一堆乱码,这将禁止进击者进一步剖析服
务器上的剧本法式,并且本来在php剧本里以明文存储的口令也失掉了保密,如mysql的口令。不外在办事器端改剧本就对照费事了,仍是当地改好再上传吧。
5、文件及目次的权限设置
web目次里除上传目次,其它的目次和文件的权限必定不克不及让nobody用户有写权限。不然,进击者可以修正主页文件,所以web目次的权限必定要设置好。
还有,php剧本的属主万万不克不及是root,由于safe_mode下读文件的函数被限制成被读文件的属主必需和以后履行剧本的属主是一样才干被读,不然假如毛病显示翻开的话会显示诸如以下的毛病:
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /usr/local/apache/htdocs/open.php
on line 3
如许咱们能避免很多体系文件被读,好比:/etc/passwd等。
上传目次和上传剧本的属主也要设成一样,不然会呈现毛病的,在safe_mode下这些要注重。
6、mysql的启动权限设置
mysql要注重的是不要用root来启动,最好别的建一个mysqladm用户。可以在/etc/rc.local等体系启动剧本里加上一句:
su mysqladm -c "/usr/local/mysql/share/mysql/mysql.server start"
如许体系重启后,也会主动用mysqladmin用户启动mysql历程。
7、日记文件及上传目次的审核及
检查日记和人的惰性有很大关系,要从那末大的日记文件里查找进击陈迹有些易如反掌,并且也未必有。
web上传的目次里的文件,也应当常常反省,或许法式有成绩,用户传上了一些不法的文件,好比履行剧本等。
8、操作体系本身的补钉
一样,给体系打已知破绽的补钉是体系办理员最根基的职责,这也是最初一道防地。
经由以上的设置装备摆设,固然说不上坚如盘石,然而也在相当水平上给进击者的测试形成良多费事,即便php剧本法式呈现对照严重的破绽,进击者也没法形成实践性的损坏。
假如您还有更乖僻,更反常的设置装备摆设办法,但愿能一同分享分享;)
多去关于PHP的网站,尤其有很多经典的文章,多读读这些文章显然是有好处的。 |
|