# mv gd.{disable,ini}
# /sbin/service httpd restart 4. 记录 PHP 错误信息
为了提高系统和
Web 应用程序的安全,PHP 错误信息不能被暴露出。要做到这一
点,需要编辑
/etc/php.d/security.ini 文件,并设置以下指令:
display_errors=Off 为了便于开发者 Bug 修复,所有 PHP 的错误信息都应该记录在
日志中。
log_errors=On
error_log=/var/log/httpd/php_scripts_error.log
5. 禁用远程执行代码
如果远程执行代码,允许
PHP 代码从远程检索数据功能,如 FTP 或 Web 通过
PHP 来执行构建功能。比如:file_get_contents()。
很多程序员使用这些功能,从远程通过
FTP 或是 HTTP 协议而获得数据。然而,此
法在基于
PHP 应用程序中会造成一个很大的漏洞。由于大部分程序员在传递用户提供的数
据时没有做到适当的过滤功能,打开安全漏洞并且创建了代码时注入了漏洞。要解决此问题,
需要禁用
_url_fopen in /etc/php.d/security.ini,并设置以下命令:
allow_url_fopen=Off 除了这个,我还建议禁用_url_include 以提高系统的安全性。
allow_url_include=Off 6. 禁用 PHP 中的危险函数
PHP 中有很多危险的内置功能,如果使用不当,它可能使你的系统崩溃。你可以创
建一个
PHP 内置功能列表通过编辑/etc/php.d/security.ini 来禁用它。
disable_functions
=exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,pars
e_ini_file,show_source 7. 资源控制
为了提高系统的稳定性,强烈建议设置每个脚本解析请求数据所花费的时间和脚
本可能消耗的最大内存量。正确的配置这些参数可以防止
PHP 任何脚本消耗太多的资源或
是内存,从而避免系统不安全或降低安全系数。
# set in seconds
max_execution_time = 30
max_input_time = 30
memory_limit = 40M
8. 限制 PHP 访问文件系统
该
open_basedir 指令指定的目录是允许 PHP 访问使用 fopen()等功能。如果任何脚
本试图访问超出
open_basdir 定义的路径文件,PHP 将拒绝打开。值得注意的是,你不能使
用一个符号链接作为一种变通方法。
; Limits the PHP process from accessing files outside; of specifically designated
directories such as /var/www/html/ open_basedir="/var/www/html/"; ——; Multiple dirs
example;
open_basedir="/home/httpd/vhost/cyberciti.biz/html/:/home/httpd/vhost/nixcraft.com/html/:/ho
me/httpd/vhost/theos.in/html/"; ——9.限制文件/目录访问
进行适当的安全设置:确保
Apache 作为非 root 用户运行,比如 www-data 或
www.对于文件和目录在基于/var/www/下同样属于非 root 用户。想要更改所有者,执行以下
命令:
# chown -R apache:apache /var/www/ 10.编译保护 Apache,PHP 和 MySQL 的配置
文件
使用
charrt 命令编译保护配置文件