六、强化PHP的安全
OpenBSD软件包中的PHP已经自带了suhosin这个补丁,可以在很大程度上提高PHP脚本的安全。本节主要讨论在php.ini文件中进行相关的设置,进一步提升安全性。具体来说,就是禁用某些危险函数和启用PHP安全模式。
偶一般是把对PHP的所有修改都放在一个单独的文件中进行,包括对PHP参数以及扩展模块的修改,都放在这个文件中一并处理,这样查找、修改和管理会方便许多:
vi /var/www/conf/php5/addphp.ini
加入下面的内容:
; 禁止动态加载模块
enable_dl = Off
; 隐藏PHP信息
expose_php = Off
; 限定可访问目录
open_basedir = /var/nginx/html/
;设定session暂存目录
session.save_path=/var/nginx/sesstmp
; 设定PHP上传文件的临时目录
upload_tmp_dir=/var/nginx/tmp
; 禁用危险函数(注意下面的内容应该是一行,编排的原因分成了多行)
disable_functions = phpinfo,com,shell,exec,system,passthru,error_log,
stream_socket_server,putenv,ini_alter,ini_restore,ini_set,dl,openlog,
syslog,readlink,symlink,link,leak,fsockopen,pfsockopen,proc_open,
popepassthru,escapeshellcmd,escapeshellarg,chroot,scandir,chgrp,chown,
shell_exec,proc_get_status,popen,shmop_close,shmop_delete,shmop_open,
shmop_read,shmop_size,shmop_write
; 启用PHP的安全模式
; PHP在安全模式下运行是用性能换安全。据简单测试,性能下降到50%左右,各位请酌情使用
; 启用安全模式后,某些程序可能受到影响。例如,Discuz!将无法上传附件
safe_mode = On
; pecl-APC只使用16M的共享内存用以加速PHP程序的运行
apc.shm_size=16M
保存退出。