background image

  

# 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 命令编译保护配置文件