1、编译时候注意补上已知漏洞
从4.0.5开始phpmail加入了第 5个参数但它没有好好过滤使得php应用能突破safe_mode限制而去执行命令所以使用4.0.5和4.0.6时候在编译前我们需要修改php源码包里ext/standard/mail.c文件禁止mail第 5参数或过滤shell在mail.c文件第152行也就是下面这行:
(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 = _disibledevent=> 关闭显示后php执行信息将不会再显示给用户这样能在定程度上防止攻击者从信息得知脚本物理位置以及些其它有用信息起码给攻击者黑箱检测造成定障碍这些信息可能对我们自己有用可以让它写到指定文件中去那么修改以下:
log_errors = Off
改为:
log_errors = _disibledevent=> 去掉前面;注释把filename改为指定文件如/usr/local/apache/logs/php_error.log
error_log = /usr/local/apache/logs/php_error.log
这样所有都会写到php_error.log文件里
2)Safe Mode
phpsafe_mode功能对很多进行了限制或禁用了能在很大程度解决php安全问题在Safe Mode部分找到:
safe_mode = Off
改为:
safe_mode = _disibledevent=> 指定要执行路径如:
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里加上这么几行:
php_admin_value open_basedir /usr/local/apache/htdocs
这样如果脚本要读取/usr/local/apache/htdocs以外文件将不会被允许如果显示打开话会提示这样:
Warning: open_basedir restriction
最新评论