php.ini配置文件的调整和优化

环境:

php-5.3.29

安全配置

(1)打开php的安全模式

php的安全模式是一个非常重要的内嵌的安全机制,它能控制一些php中的函数,比如system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键的文件,比如/etc/passwd,但是默认的php.ini是没有打开安全模式,建议打开,但是要看是否会影响程序

safe_mode = On

当php的安全模式关闭的时候,运行test2.php:

<?php
 readfile('/etc/passwd');
?>

QQ20150321123958它会把所有的/etc/passwd的内容显示出来,这样非常不安全

 

(2)用户组安全

当safe_mode打开时,safe_mode_gid 被关闭,那么php脚本能够对文件进行访问,而且相同组的用户也能够对文件进行访问

建议设置为

safe_mode_gid = Off

默认是关闭的

如果不进行设置,可能我们无法对我们的服务器网站目录的文件进行操作了,比如我们要对文件进行操作的时候

(3)关闭危险函数

如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,我们觉得不希望执行包括system()等能够执行命令的php函数,或者能够查看php信息的phpinfo()等函数,那么我们就禁止他们:

disable_functions =system,passthru,exec,shell_exec,popen,phpinfo

如果你要禁止任何文件盒目录的操作,那么可以关闭很多文件操作

disable_functions =chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete

这样,就能过抵御大部分的phpshell

(4)关闭php版本信息在http头中的泄露,(默认开启)

expose_php = Off

关闭前:

[root@mysql teddy]# curl -I http://abc.com/test2.php

HTTP/1.1 200 OK

Date: Mon, 15 Dec 2014 13:13:09 GMT

Server: Apache/2.2.29 (Unix) DAV/2 PHP/5.3.29

X-Powered-By: PHP/5.3.29

Vary: Accept-Encoding

Content-Type: text/html

关闭后:

[root@mysql teddy]# curl -I http://abc.com/test2.php

HTTP/1.1 200 OK

Date: Mon, 15 Dec 2014 13:12:34 GMT

Server: Apache/2.2.29 (Unix) DAV/2

Vary: Accept-Encoding

Content-Type: text/html

(5)关闭注册全局变量

在php中提交变量,包括使用POST或者GET提交的变量,都讲自动注册为全局变量,能过直接访问。这对服务器非常不安全,所以,我们要关闭它,默认是关闭的

register_globals = Off

当然,如果这样设置了,那获取对应变量的时候就要采取合理的方式,比如获取GET提交变量var,那么就要用$_GET[‘var’]来进行获取,这个php程序员要注意

提示:关闭此项可能会导致老的php程序出问题,所以具体情况要具体分析

(6)打开magic_quotes_gpc来防止SQL注入

 SQL注入是非常危险的问题,小则网站后台被入侵,重则服务器沦陷

magic_quotes_gpc = Off

默认是关闭的,如果开启了,将自动把用户提交对sql的查询进行转换,比如把   转为\等,这对防止sql注入有很大的帮助,所以建议打开:

magic_quotes_gpc = On

(7)错误信息控制

一般php在没有连接到数据库或者其他的的时候会有提示错误,一般错误信息中会包含php脚本当前路径信息或者查询的SQL语句等信息,所以建议禁止显示错误信息,默认是关闭状态

display_errors = Off

(8)错误日志

建议在关闭display_errors后能够把错误信息记录下来,以便查找服务器运行时候出现问题的原因:

log_errors = On

同时也要设置错误日志存放目录,可以和apache的日志放一起

error_log = /root/logs/php_errors.log

注意:给文件必须允许apache用户和组有写的权限

(9)其他参数的优化

max_execution_time = 30

#每个脚本运行的最长时间(秒)。当出现无法上传较大文件或者后台备份数据经常超时,可以考虑将此值调大一些,0表示没有限制

max_input_time = 60

#等待输入数据的时间有多长(秒),

memory_limit = 128M

#一个脚本可以最多使用多大内存

upload_max_filesize = 2M

#上传文件最大许可大小

output_buffering = 4096

#数据发送给客户机之前,有多少数据(字节)需要缓存

allow_url_fopen = Off

#禁止打开远程地址,默认是开启的。

 

php.ini配置文件的调整和优化
Scroll to top