News新闻

业界新闻动态、技术前沿
Who are we?

您的位置:首页      服务器技术      常规PHP网站建设安全性设置

常规PHP网站建设安全性设置

发布日期:2014-04-08 00:00:00 877

1、禁用远程执行代码 

如果远程执行代码,允许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
 

2. 禁用PHP中的危险函数 

PHP中有很多危险的内置功能,如果使用不当,它可能使你的系统崩溃。你可以创建一个PHP内置功能列表通过编辑/etc/php.d/security.ini来禁用它。
disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source  
 

3. 资源控制 

为了提高系统的稳定性,强烈建议设置每个脚本解析请求数据所花费的时间和脚本可能消耗的最大内存量。正确的配置这些参数可以防止PHP任何脚本消耗太多的资源或是内存,从而避免系统不安全或降低安全系数。
# set in seconds  
 
max_execution_time = 30 
 
max_input_time = 30 
 
memory_limit = 40M 
 

4. 限制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/:/home/httpd/vhost/theos.in/html/"
 
 ; ------------------------------------  
 

5.限制文件/目录访问 

进行适当的安全设置:确保Apache作为非root用户运行,比如www-data或www。对于文件和目录在基于/var/www/下同样属于非root用户。想要更改所有者,执行以下命令: 
 # chown -R apache:apache /var/www/  #编译保护Apache,PHP和MySQL的配置文件 使用charrt命令编译保护配置文件 
# chattr +i /etc/php.ini  
 # chattr +i /etc/php.d/*
# chattr +i /etc/my.ini 
# chattr +i /etc/httpd/conf/httpd.conf 
# chattr +i /etc/  
使用charrt命令可以编译保护PHP文件或者是文件中的/var/www/html的目录:
# chattr +i /var/www/html/file1.php   
 
# chattr +i /var/www/html/